首页 > 代码库 > 设计模式笔记7:原型模式

设计模式笔记7:原型模式

1.原型模式用处:

·用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

 ps:当我们需要创建大量相同对象的时候,就可以用原型模式大批量复制对象。和现实生活中

的复印机相似,通过一个原型(模板)批量复制相同的对象;

 

2.深复制与潜复制的区别:

       复制需要用到MemberwiseClone()方法;

 

1,浅复制:如果字段是值类型的,则对该字段进行逐位复制,如果字段是引用类型,则复制引用但不复制引用的对象;因此原始对象和其副本 引用同一对象;

2,深复制;
    把引用对象的变量指向复制过来的新对象,而不是原有的被引用的对象;

ps:同是复制对象,深复制在复制引用对象时会为引用生成新的一个对象副本不影响原对象。而浅复制直接复制引用;

3.深复制的实现

用MemberwiseClone()方法 把引用对象的值复制给引用变量;
ps:若parper类对象是在Print类中引用的对象;
分两步 1,在parper类中增加一个Clone方法;
2, 在Print类中引用的地方调用paper对象的Clone方法
[csharp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. 代码  
[csharp] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. Paper类:  
  2. public Object Clone()  
  3. {  
  4. return (Object)this.MemberwiseClone();  
  5. }  
  6.   
  7. Print类:  
  8. this.paper = (Paper)paper.Clone();  

设计模式笔记7:原型模式