四论GProductCreator和FactoryUsingPointer
来源:互联网 发布:济南软件培训学校 编辑:程序博客网 时间:2024/04/29 16:26
在前面我说,根本不需要AbstractFactory,GObject系列产品的客户给你一个namespace ConcreteFactoryG接口,而TObject系列产品的客户则给你一个namespace ConcreteFactoryT接口。他们的操作都是一样:createTank(),createBullet(),createBomb().然而,我很乐意发现,这个没用的AbstractFactory有很大用处!他的威力在于与FactroyUsingPointer的结合之中。我们不仅仅要让不同系列的产品在不同的工厂里做,我们还需要产品在工厂里批量生产!为了更进一步将客户隔离开,我们只为客户提供每个个产品的标志符,客户只通过标志符得到产品,这就是大家熟知的工厂模式。现在我要将工厂模式和抽象工厂模式结合起来。namespace AbstractFactory{ typdef GCreator GAbstractCreator; typdef TCreator GAbstractCreator;}typedef std::string identifier_type;FactoryUsingPointer theGFactory;FactoryUsingPointer theTFactory;产品供应方代码:T系列产品供应方。他可见namespace ConcreteFactroyT但不可见ConcreteFactroyG。(这很好理解,IBM有他的芯片作坊,对作坊的一切了如指掌,但对apple的公司内部一无所知):theTFactory.Register("tank", &createTank);theTFactory.Register("bomb",&createBomb);G系列产品供应方。他可见namespace ConcreteFactroyG但不可见ConcreteFactroyT:theGFactory.Register("tank", &createTank);theGFactory.Register("bomb",&createBomb);客户端代码:(享用T供应方产品)theTFactory.CreateObject("tank");theTFactory.CreateObject("bomb");theTFactory.CreateObject("bullet");(享用G供应方产品)theGFactory.CreateObject("tank");对客户端来说,没有什么比这更舒服了。
- 四论GProductCreator和FactoryUsingPointer
- 三论GProductCreator和FactoryUsingPointer
- 四、完整性和约束
- (四)表达式和语句
- C和指针 四
- (四) 文档和目录
- 四、文本和输出
- 四.照相机和摄像头
- 四、数组和指针
- 四、技能和经验(一)
- 四、技能和经验(二)
- 文件和回收站操作(四)
- 事务和锁(四)
- Web服务和SOA(四)
- 汉诺塔和四塔分析
- ProgressBar和ProgressDialog(四)
- redo 和 undo 之四
- 四、删除文件和目录
- 防范SQL注入式攻击 zz 还没看
- ADO三大对象的属性、方法、事件及常数
- OOD 启思录 61条面向对象设计的经验原则
- 道法自然-面向对象实践指南
- 也谈“PB中相关联下拉数据窗口的实现”(jqz1225原创)
- 四论GProductCreator和FactoryUsingPointer
- UltraWebTab为无边框效果
- 面向对象的基础结构设计
- 可重用性的克服
- SQL 语句
- 霹雳诗词及原话摘录
- 常用英语1000句!
- 面向对象的关系数据库设计
- hibernate配置的原因?