设计模式入门指南(四):原型模式
发布于 5 年前 作者 zhulinwei 2938 次浏览 来自 分享

Prototype Pattern

原型模式

概念

利用已有的对象/原型并通过拷贝的形式来创建新的对象

使用场景

类或对象的创建成本比较高,而同一个类的不同对象之间差别不大。

实现方式

Java Sample

public abstract class IPrototype {
 public abstract Prototype clone();
}
public class Prototype extends IPrototype {
 public Prototype clone() {
 Prototype prototype = new Prototype();
 return prototype;
 }
}

Golang Sample

type IPrototype interface {
 Clone() IPrototype
}
type Prototype struct{}
func (prototype *Prototype) Clone() IPrototype {
 pointer := *prototype
 return &pointer
}

原型模式要求对象实现一个可以克隆自身的接口,通过这个接口可以复制对象来创建新的实例,而无需再通过new来创建。

类图

总结反思

原型模式的原理和实现很简单,它有两种实现方式需要注意:深拷贝和浅拷贝。浅拷贝只会复制对象中基本类型的数据和引用类型数据的内存地址,不会递归地复制引用对象,以及引用对象引用的引用对象。而深拷贝得到的是一份完完全全独立的对象,但这个过程更加耗时和消耗内存空间。一般来说可以通过序列化和反序列化对象来实现深拷贝。

logo.jpg

1 回复
回到顶部

AltStyle によって変換されたページ (->オリジナル) /