●观察者模式:当对象间有一对多的依赖关系时,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。
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();