由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的方法却非常需要这个类型信息。

相关文章推荐

一起talk C栗子吧(第一百五十六回:C语言实例--基于AF_UNIX域的流套接字通信)

各位看官们,大家好,上一回中咱们说的获取socket通信地址的例子,这一回咱们说的例子是:基于AF_UNIX域的流套接字通信 。闲话休提,言归正转。让我们一起talk C栗子吧!...
  • talk_8
  • talk_8
  • 2016年05月28日 20:57
  • 3154

(六) 发送函数AF_DataRequest zigbee数据发送和接受

Z-Stack 中发送数据通过在应用层调用函数void SampleApp_SendFlashMessage( uint16 flashTime )完成,其中flash Time 为发送的数据,这个函...

初次使用RTL8710AF开发板的一些心得

首次接触RTL8192AF这一款模块,模块硬件就不多说,主要讲一下关于软件SDK开发上的遇到的一些问题,记录一下,方便纯小白极客爱好者入门了解。 使用到的硬件工具有:USB mricor线【即通用手机...

802.3af与802.3at区别及PSE与PD名词解释

802.3af与802.3at区别及PSE与PD名词解释 PoE(Power over Ethernet,以太网供电)是一种局域网技术,可通过双绞线向受电设备提供直流功率,目前已在在企业与工业应用中...
  • dayancn
  • dayancn
  • 2015年05月26日 11:39
  • 2941

在af:table中实现一次删除多行

转自: http://blog.csdn.net/luyushuang/article/details/6798144 在af:table中,通常我们做的是一次选中一行,然后点击绑定了Del...

关于PF_INET和AF_INET的区别

在写网络程序的时候,建立TCP socket:    sock = socket(PF_INET, SOCK_STREAM, 0); 然后在绑定本地地址或连接远程地址时需要初始化sockaddr_...

AF_DataRequest ()函数说明

转自:http://blog.sina.com.cn/s/blog_690878d501011cmp.html 原型:    afStatus_t AF_DataRequest( afAd...

AF ios开发之网络数据的下载与上传

博客园首页新闻新随笔联系管理订阅 随笔- 23  文章- 0  评论- 28  ios开发之网络数据的下载与上传 要实现网络数据的下载与上传,主要...

iOS 迁移到HTTPS(自建证书+单向验证+AF3.0+WKWebView+SDWebImage)

写在前面的提醒   ① 还没到2017,苹果还没确切的说明对HTTPS的要求,所以目前还不确定自建证书到底可不可以通过审核。   ② 网上很多人说自建证书必须禁掉ATS才能正常访问(App...

Zigbee数据发送AF_DataRequest和数据接收afIncomingMSGPacket_t结构体

数据发送: AF_DataRequest(  afAddrType_t    *dstAddr,   //目的地址结构体变量(含端点号) endPointDesc_t  *srcEP...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:由AF再论template的再考虑
举报原因:
原因补充:

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