c++设计模式学习笔记(一)

 

1.       Factory 模式

 

 

Factory设计模式是主要是为了方便对象的创建而建立的,封装了对对象的创建。这样我们就能通过调用ConcreteFactory中的CreateProduct ()方法创建一个Product 子类对象,而不需要过多的继承。Factory 模式主要适合要创建的对象属于一类,如果要创建的对象不属于一类,那么就要用到AbstractFactory模式。

 

类的调用:

          Factory   f = new ConcreteFactory();

          Product p = f->CreateProduct();

可能遇到的问题:如果Product有很多子类

解决方法:1 为每一个Product子类再Factory中添加一个方法,这样Factory类永远不会关闭。2。创建一个Factory类的子类,利用方法的多态性进行操作。

 

 2 AbstractFactory模式

AbstractFactory模式主要是为了给一组(多种类)提供创建的封装接口,而Factory是为一个种类的类提供创建的封装接口。AbstractFactory通常是通过Factory模式实现。

类的调用:

          AbstractFactory   f = new ConcreteFactory1();

          f->CreateProductA1();

          f->CreateProductB1();

 

3. Singleton 模式

 

Singleton模式主要是通过维护一个static 变量来产生唯一的对象实例。该模式经常和Factory模式一块使用,因为Factory 类经常只需要一个实例对象。

代码实现:

Singleton.h:

      #ifndef _SINGLETON_H

      #define _SINGLETON_H

      #include <iostream>

      using namespace std;

 

      class Singleton

      {

       public:

            static Singleton* Instance();

       protected:

            Singleton();

       private:

            static Singleton *_instance;

     };

     #endif

Singleton.cpp:

      #include "Singleton.h"

 

      Singleton* Singleton::_instance = 0;

      Singleton::Singleton()

      {

           cout<<"Singleton..."<<endl;

      }

 

      Singleton* Singleton::Instance()

      {

         if(_instance == 0)

         {

               _instance = new Singleton();

         }

        return _instance;

      }

 

      int main()

      {

           Singleton *single = Singleton::Instance();

           Singleton *single1 = Singleton::Instance();

           if(single == single1)

           {

                 cout<<"the same Singleton..."<<endl;

           }

           return 0;

}

 

 

 

转载于:https://www.cnblogs.com/AlwinXu/archive/2009/03/31/1426291.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值