c++面试题(设计模式篇)

●观察者模式:当对象间有一对多的依赖关系时,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。

class Subject//被观察者

{

       Attach(Observer);//添加观察者         

Detach(Observer);//移除观察者

       Notify();//通知观察者                  

list<Observer*> m_observers;//观察者链表

 

}

class Observer//观察者

{

       Update();

}

 ●单例模式:一般情况下,我们建立的类有些是属于工具性质的,所以不需要每次都去new一个对象,所以将默认的构造函数声明为私有,给外面提供一个实例接口就行了。(可用全局或静态变量代替,但会影响封装性)常和工厂模式结合使用,因为工厂只需要创建一个产品实例就可以了。

class Singleton

{

       Singleton* GetInstance()

       {

              if(instance == NULL)

              {

                     return new Singleton();

              }

       }

       static Singleton* instance;

}

●工厂模式:主要是将创建对象的具体过程给封装屏蔽起来,达到提高灵活性的目的。

使用理由:把对象创建集中一一个地方(工厂中),,否则到处都是对象创建逻辑,当对象创建方法改变时只需要改变工厂方法,不需要到处修改,维护量减少。

参与者
抽象产品角色(Product):定义产品的接口
具体产品角色(ConcreteProduct) :实现接口Product的具体产品类
抽象工厂角色(Factory):声明工厂方法(CreateProduct),返回一个产品
真实的工厂(ConcreteFactory):实现CreateProduct工厂方法,由客户调用,返回一个产品的实例.

Factory* pFactory= new ConcreteFactory();

Product* pProduct= pFactory->ConcreateProduct1();

猜你喜欢

转载自blog.csdn.net/zhouchunyue/article/details/79271949