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

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

回到顶部