由AF再论template的再考虑

原创 2007年09月19日 13:56:00

AF模式运行使用任何实现方法,只要AbstractFactory被完全实现。那开发一个原型产品工厂完全不用修改底层的东西。

使用template的本质论。如果我们开发原型工厂,那在new对象的时候要换成原型的拷贝,明显,保存一个原型是解决这个问题的核心,如此则有:

template    <class ConcreteProduct,class Base>
class    PrototypeFactoryUnit    :public Base
...{
public:
    PrototypeFactoryUnit(ConcreteProduct
* p = 0)    :pPrototype_(p)...{}
    ConcreteProduct
*    GetPrototype()    const    ...{return    pPrototype_;}
    
void    SetPrototype(ConcreteProduct* pObj)    ...{pPrototype_    = pObj;}
    ConcreteProduct
*    DoCreate(Type2Type<ConcreteProduct>)
    
...{
        assert(pPrototype_);
        
return    pPrototype_->Clone();
    }

private:
    ConcreteProduct
*    pPrototype_;
}

和使用new一样,不过此时需要有一个预先设定 ConcreteProduct供产出产品。所以有了几个辅助方法。

你可能已经发现了,这个时候再使用ConcreteFactory不再需要TList,因为正确的PrototypeFactoryUnit知道该产生什么,它甚至不关心它正在操作的类型是什么。

当然,在获取产品的时候,你的代码不需要任何改变:

    SmartPtr<Test2>    t2    = pKit->Create<Test2>();

这不是为了照顾使用者,尽管特定的Creator不需要知道类型,但是找到这个特定Creator的方法却非常需要这个类型信息。

由AF再论template

template的伟大魅力在于它的自动生成代码能力,基于template的技术,无论多么高深仰或多么花哨,只要你明白它的自动生成代码的本质,问题会好处理很多。譬如AbstractFactory在tem...
  • win2ks
  • win2ks
  • 2007年09月19日 13:38
  • 504

再论由内而外造就自己

再论由内而外造就自己
  • Last_Impression
  • Last_Impression
  • 2015年06月14日 18:39
  • 927

笔记:《高效能人士的七个习惯》第十一章 再论由内而外造就自己

1、 七个习惯浇灌出来的最高级、最美好和最甘甜的果实就是齐心协力,就是把自己、爱人、朋友和同事合而为一。 2、 刺激与回应之间存在一段距离,成长和幸福的关键就在于我们如何利用这段距离。 3、 我们...
  • icamera0
  • icamera0
  • 2016年01月21日 23:14
  • 1027

高效能人士的七个习惯之一由内而外的全面造就自己读后感

第一次读这样的书还真有点不习惯,看完了第一章,感觉逻辑性不像技术书籍那么强,技术书籍好比一个匹萨,分的再细,怎么看都是一个整体,而这本书的第一章感觉就像大拌菜 ,各种菜品都有。 相对显的杂乱一些,看过...
  • dingwood
  • dingwood
  • 2012年07月16日 23:40
  • 7150

有一种渣,叫做由内而外的渣,就是我

之前大三的时候校招拿过百度offer,后来实习也是随便面了一下进入了一个小公司实习,于是自己作死的自信心暴涨,然后就各种研一不上进,结果现在跪成狗。 其实早在大四时候面过百度某部门的研发实习生,对方...
  • geniusluzh
  • geniusluzh
  • 2014年04月01日 07:41
  • 810

由内而外全面造就自己(四)

后来我为个人或公司担任顾问时,经常借用这个实验,因为它能够使我们对人以及人际关系的本质,有更透彻的认识。最要紧的是,它充分体现出制约作用对我们的思维有多大的影响力。仅仅10秒钟就能产生如此这般的影响,...
  • Hackson
  • Hackson
  • 2004年07月31日 21:41
  • 943

《C专家编程》学习笔记1

1.整形升级和寻常算术转换: char,short int 或者位段,包括他们的有符号和无符号型,以及枚举类型,可以使用在需要的int 或unsignede int 的表达式中。如果int可以完整的...
  • zmrlinux
  • zmrlinux
  • 2015年05月05日 18:19
  • 474

高效能人士的七个习惯--由内而外全面造就自己

高效能人士的七个习惯--由内而外全面造就自己
  • Last_Impression
  • Last_Impression
  • 2015年04月07日 14:34
  • 1583

笔记:《高效能人士的七个习惯》第一章 由内而外全面造就自己

《高效能人士的七个习惯》第一章 由内而外全面造就自己。读书笔记:品德成功论提醒人们,高效能德生活是有基本原则的,只有当人们 学会并遵循这些原则,把他们融入到自己的品格中去,才能享受真正的成功与恒久的幸...
  • icamera0
  • icamera0
  • 2016年01月01日 22:46
  • 1100

ThreadLocal再论

首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各...
  • feng_0207
  • feng_0207
  • 2017年10月14日 11:59
  • 31
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:由AF再论template的再考虑
举报原因:
原因补充:

(最多只允许输入30个字)