首页 > 代码库 > (Protype Pattern)原型模式
(Protype Pattern)原型模式
- 适用性:
当我们系统中有一些类,在使用的时候都有同样需要大量的创建,而这样的创建是复杂的而且是浪费CPU,内存资源的,为了解决这一问题,就出现了原型模式(深度克隆,浅克隆)
- 模式思想:
1. 通过使用同一的创建对象方案,尽量避免创建对象复杂过程代码重复出现;
2. 为了节省CPU,内存资源,我们可以让不同的类之间共享一些(业务上允许)资源,从而达到缩小占用内存空间;
3. 这样的一类业务需求本来就具有一定的同一性,我们抽象出一个同一的抽象类(Protype,ICloneable)作为规范,让有这样需求的类实现他们,从而达到了结构同一。
- 模式图:
- 模式示例:
原型抽象类:
1 public interface ICloneable<T>2 {3 T Clone();4 }
具有原型属性类:
1 public class Member:ICloneable<Member> 2 { 3 public int ID{get;set;} 4 5 public string Name{get;set;} 6 7 public Member Clone() 8 { 9 Member member=new Member(){10 ID=this.ID,11 Name=this.Name12 };13 return member;14 }15 }
1 public class Product:ICloneable< Product > 2 { 3 public int ID{get;set;} 4 5 public string Name{get;set;} 6 7 public Member Owner{get;set;} 8 9 public Product Clone()10 {11 Product product=new Product (){12 ID=this.ID,13 Name=this.Name,14 Owner=this.Owner // 当前创建者,应该均为一个创建者,所以这里就可以共享Owner,从而节省了内存空间。15 };16 return product;17 }18 }
- 特点:
Protype抽象类特点: | 就有一个抽象接口Clone,返回值T(object,尽量使用泛型,避免加压包) |
具有原型属性的一些类特点: | 都实现了Protype抽象类,都有自己制定规则的Clone方法,内部都采用了符合业务需求的克隆方案(深度克隆还是采用浅克隆,要依据业务来定)。 |
当然.NET系统中叶提供了类似的接口类ICloneable,并提供了MemberwiseClone()浅克隆方法。
深克隆方案也有:反序列化、反射、new等。
(Protype Pattern)原型模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。