通过克隆原型创建新的对象
原型和工厂的区别:
- 工厂相当于创建新的原型类来获取新对象。
- 原型则通过克隆已存在的原型类来获取新对象。
包括:抽象原型、具体原型
例子:
细胞克隆自身。
抽象原型:细胞抽象原型
具体原型:细胞原型
UML类图
相关接口和类定义:
namespace Prototype
{
/// <summary>
/// 细胞抽象原型
/// </summary>
abstract class CellAbstractPrototype
{
protected string Name;
protected CellAbstractPrototype(string name)
{
Name = name;
}
//克隆
public abstract CellAbstractPrototype Clone();
public string GetName()
{
return Name;
}
}
/// <summary>
/// 细胞原型
/// </summary>
class CellPrototype : CellAbstractPrototype
{
public CellPrototype(string name) : base(name)
{
}
//克隆,浅拷贝
public override CellAbstractPrototype Clone()
{
return (CellPrototype) this.MemberwiseClone();
}
}
}
调用示例:
using System;
namespace Prototype
{
class Program
{
static void Main(string[] args)
{
CellAbstractPrototype cellPrototype = new CellPrototype("A");
//克隆细胞
CellAbstractPrototype cloneCell = cellPrototype.Clone();
Console.WriteLine("原型细胞名称:" + cellPrototype.GetName());
Console.WriteLine("克隆细胞名称:" + cloneCell.GetName());
}
}
}
结果:
参考资料:《设计模式-可复用面对对象软件的基础》