设计模式随笔--原型模式

    下面均为今天本人所学,看的书为《大话设计模式》,很多代码都是书上的代码,但是是我自己的理解,记一下,当做学习笔记
今天学习的是原型模式:

类图如下:
---图片没有上传 - -!

比如设计一个简历类,我们初步定义好了这个类的结构,在客户端(client)调用的时候就要生成一个实例,然后调用该类中的方法。这样只处理了一个简历,如果有成百上千个简历,我们还要去简历那么多个实例么?那样。。。当然,我们对于同一份简历可以用循环去调用(虽然不是一个好方法),也可以用一个实例去赋给其他实例,但是结果出来都是一样的,每个人的简历都是一样,是抄袭的,下面的原型模式就是告诉我们一种抄袭的方式: .net中提供我们一个方法:MemberwiseClone()该方法用于对于类中的成员进行浅层复制(等下介绍什么是浅层复制)。代码如下:

原型类

以上为基本原型,作为复制的模板;

 

Code

以上为具体原型,实现了Clone方法。
以下是客户端代码:

   ConcretePrototype1 p1 = new ConcretePrototype1("123456789");
   ConcretePrototype1 c1 
= (ConcretePrototype1)p1.Clone();
   Console.WriteLine(
"Cloned:{0}", c1.ID);

以上就完成了一个类的成员clone
.net中提供了另外一个接口可以实现以上功能:ICloneableclass

Code

客户端就可以这样调用:

Code

这样就可以复制多个人的简历,前提都是从一个模板中提出来的,这样是不是方便很多呢?
前面说到了潜复制,MemberwiseClone()方法是这样的,如果字段是值类型的,则对该字段执行逐位复制,如果是引用类型,则复制引用单不复制以用的对象

posted @ 2009-11-23 23:26  mylhei  阅读(331)  评论(0编辑  收藏  举报