设计模式
cctdbnj
这个作者很懒,什么都没留下…
展开
-
设计模式-单例模式
使用场景,一个类只需要一个实例的情况下,比如项目中操作配置项的类等。 实现方法:将构造函数私有化,防止在该类之外创建对象,GetIns返回该类的静态成员变量,作为唯一的对象。 class CDpnHelper { public: ~CDpnHelper(); static CDpnHelper& GetIns() { static CDpnHe...原创 2019-07-03 17:36:48 · 105 阅读 · 0 评论 -
设计模式-观察者模式
使用场景:对象存在一对多的情况时,比如某个对象的改变,需要通知依赖他的所有对象 被观察者(Subect):改变时通知所有观察者,包含观察者的合集 观察者(Observer):抽象类 具体的观察者(ConcreteObserver):继承Observer class Subject { public: void Attach(Observer* p) { m_vcObs.push_...原创 2019-07-03 20:10:42 · 92 阅读 · 0 评论 -
设计模式-策略模式
行为模式 Stragegy,定义所有支持的算法的公共接口 ConcreteStrategy,封装了具体的算法或行为,继承于Strategy Context,用一个ConcreteStrategy来配置,维护一个对Strategy对象的引用 使用场景:一系列算法(完成相同的工作),但是实现方法不一样。可以使用同一方法调用所有的算法。 下面是未使用设计模式的代码 class CBird { ...原创 2019-07-03 19:25:40 · 98 阅读 · 0 评论 -
设计模式-外观模式
外观模式:把对子系统一系列调用,封装成更高层的接口,降低用户与子系统之间的耦合性 class C1 { public: void Work() { cout << "c1 work"; } }; class C2 { public: void Work() { cout << "c2 work"; } }; // 封装子系统C1,C2的work...原创 2019-07-03 20:30:24 · 89 阅读 · 0 评论