浅尝DesignPattern_Prototype

UML:

2010042622071036.png

Sample:

Prototype  ()
  • declares an interface for cloning itself
  • 定义复制对象的接口
ConcretePrototype  ()
  • implements an operation for cloning itself
  • 实现复制自己的操作
Client  ()
  • creates a new object by asking a prototype to clone itself
  • 通过访问prototype来创建一个新的对象来复制

Prototype:

 

1 abstract class Prototype
2 {
3 private string _id;
4 public Prototype(string id)
5 {
6 this._id = id;
7 }
8 public string Id
9 {
10 get { return _id; }
11 }
12 public abstract Prototype Clone();
13 }

 

ConcretePrototype1:

 

1 class ConcretePrototype1:Prototype
2 {
3 public ConcretePrototype1(string id)
4 : base(id)
5 { }
6
7 public override Prototype Clone()
8 {
9 return (Prototype)this.MemberwiseClone();
10 }
11 }

 

ConcretePrototype2:
1 class ConcretePrototype2
2 {
3 public ConcretePrototype2(string id)
4 : base(id)
5 { }
6 public override Prototype Clone()
7 {
8 return (Prototype)this.MemberwiseClone();
9 }
10 }

 

Program:
1 #region Prototype
2 ConcretePrototype1 p1 = new ConcretePrototype1("I");
3 ConcretePrototype1 c1 = (ConcretePrototype1)p1.Clone();
4 Console.WriteLine("Cloned: {0}", c1.Id);
5 ConcretePrototype2 p2 = new ConcretePrototype2("II");
6 ConcretePrototype2 c2 = (ConcretePrototype2)p2.Clone();
7 Console.WriteLine("Cloned: {0}", c2.Id);
8 Console.ReadKey();
9 #endregion

 

原型模式就是请求一个原型来克隆对象自身

转载于:https://www.cnblogs.com/TivonStone/archive/2010/04/26/1721590.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值