Cpper
C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
一般来说 原型方法主要使用于快速生成和已存在对象基本一致的对象。
一般典型的例子是细胞分裂和孙悟空变换出N的小猴子
不过我这里举一个在GUI设计过程的例子

假如一个面板上的同质按钮,他们仅文本不同,代表的逻辑不同,其他信息是完全一致的,比如皮肤,边框,大小等
按照一般方法可能会这样构造面板
Button* btn1 = new Button();
btn1
->SetSize(..);
btn1
->SetBorder(..);
btn1
->SetListener(..);
btn1
->SetVisible(true);
btn1
->SetParent(panel);
btn1
->SetColor()
Button
* btn2 =..
当然还有其他按钮:)
 
是不是很烦?
借助原型模式
可以大大的简化!
比如:
Button *btn1 = new Button(panel);
Button 
*btn2= btn1->Clone();
Button 
*btn3= btn1->Clone();
Button 
*btn4= btn1->Clone();
然后只要设置各个按钮对应的文本即可
为了使用原型方法我们需要做的仅仅是
给对象增加Clone接口和其实现即可
比如:
class AbstractWidget
{
public:
     virtual AbstractWidget
* Clone() = 0
     
};

需要说明的是原型一般使用的是浅拷贝
posted on 2011-05-06 22:22 ccsdu2009 阅读(1331) 评论(0)  编辑 收藏 引用 所属分类: 软件工程设计模式

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理