设计模式学习(1):Factory模式
sshong 发表于2007年11月4日 10:08:00 更新于2008年3月21日 19:22:00
假定有一个父类fruit,其有几个子类分别为orange、apple,传统的情况下,如果要用fruit指针指向其几个子类来实现动态性能,必须如下代码:
fruit* p=new orange();
当子类很多,而且命名复杂时,我们并不确切的知道子类的名称。或者原先的我们只是在fruit类的构造函数中传递一个type,并没有派生出相应的子类而现在由于某种原因需要用到派生子类时 ,我们就可以用到Factory模式了。
其核心思想是封装创建具体子类的实现!
如下图1和图2所示。两个之间的差异是在图2的思路中在factory只是提供创建对象的接口,具体实现创建哪个子类product则在factory的相应子类中实现。

Factory模式带来的一些问题:
1.如果为每种具体的product创建一个创建函数,则我们不得不在factory中添加新的创建函数或者继承product新建一个类如图2那样。
2.如何解决上述问题?可以在创建函数中接受参数如type或者模板化fatory类。
3.Factory模式仅仅局限于一类product,即有一个共同的基类。
4.如何为不同类的类提供创建接口呢?请参见Abstract factory!
回到本例原先的fruit问题,可以用下图进行表示:

代码如下:
fruit* p = Factory::createfruit(1);
p->growup();
标签:无分类:CodingArt阅读:3961
评论
暂无评论
添加评论
您的大名,限长10汉字,20英文(*)
电子信箱(*)
您的网站
正文,限长500汉字,1000英文(*)
验证码(*) 单击刷新验证码
联系我
博客订阅