原型模式的定义是:
使用原型的实例指定要创建对象的类型,然后通过复制这个原型创建新的对象。
其UML类图的示例如下:
在这个模式中,参与者包括:
- Prototype:声明一个接口用于克隆其自身。
- ConcretePrototype:实现克隆其自身的操作。
- Client:通过让原型克隆其自身创建一个新的对象。
实现代码:
public interface Prototype
{
Prototype Clone();
}
public class ConcretePrototypeA : Prototype
{
public Prototype Clone()
{
// Shallow Copy: only top-level objects are duplicated
return (Prototype)MemberwiseClone();
// Deep Copy: all objects are duplicated
//return (Prototype)this.Clone();
}
}
public class ConcretePrototypeB : Prototype
{
public Prototype Clone()
{
// Shallow Copy: only top-level objects are duplicated
return (Prototype)MemberwiseClone();
// Deep Copy: all objects are duplicated
//return (Prototype)this.Clone();
}
}
使用场景:
- 每个对象的创建成本很高或很复杂。
- 数量有限的状态组合存在于对象中。