• 设计模式学习Factory Method(工厂方法)


    意图:定义一个用于创建对象的接口,让子类决定实例化哪个类

    适用性:

    当一个类不知道它所必须创建的类的对象时

    当一个类希望由它的子类来制定它所创建的对象的时候

    当类将创建对象的职责委托给多个帮助子类的一个是,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候

    示例图:

    image

    示例代码:

    //工厂根据产品id生产产品
    class CFactory
    {
    public:
        CFactory(void);
    public:
        ~CFactory(void);
        public:
        static CProduct* Create(int id)
        {
            if(id ==0)
            {
            return new CPen();
            }       
        }
    };
    //通过模板方法生产产品
    template <class CProduct>
    class CTemplateFactory:public CCreator
    {
    public:
        virtual CProduct* CreatorProduct()
        {
            return new CProduct();
        }
    };

    //抽象类不负责具体产品生产
    class CCreator
    {
    public:
        CCreator(void);
    public:
        ~CCreator(void);
        public:
        virtual CProduct* CreatorProduct()=0;
    };
    //具体创建类负责生产具体产品
    class CPenCrator:public CCreator
    {
    public:
        CPenCrator():CCreator()
        {
       
        }
        ~CPenCrator()
        {
       
        }
        public:
        virtual CProduct* CreatorProduct()
        {
            return new CPen();
        }
    };

    class CProduct
    {
    public:
        CProduct(void);
    public:
        ~CProduct(void);
    public:
        virtual void Display()=0;
    };

    class CPen:public CProduct
    {
    public:
        CPen():CProduct()
        {

        }
        ~CPen()
        {

        }
        public:
        virtual void Display()
        {
        _tprintf(_T("This an Pen/n"));
        }
    };

  • 相关阅读:
    软件创意——汽车语音安全系统
    对系统管理岗位的理解。
    求二维数组最大子数组的和。郭林林&胡潇丹
    电梯调度 结对项目开发(郭林林&胡潇丹)
    电梯调度 结对项目开发
    电梯调度 结对项目开发
    电梯调度的设计与实现过程(李帅 张硕)
    敏捷软件方法综述
    二维数组的子数组和最大问题(李帅 张硕)
    求数组子数组和的最大值 (线性算法)
  • 原文地址:https://www.cnblogs.com/SkyMouse/p/2340731.html
Copyright © 2020-2023  润新知