Archive for the ‘设计模式’ category

观察者模式C++实现

June 10th, 2014

观察者模式是非常重要的一个模式,初次遇到该模式,想了很久没有想通应该怎么做。

其实原理很简单:就是当被观察者(Observable)发生变化,然后就会某种数据方式通知(Notify)观察者(Observer),Notify的方式很多,比如我们将Observer 放到一个list或者set中,分别调用Observer的update()这样实现通知。
» Read more: 观察者模式C++实现

策略模式及其拓展 C++实现

June 5th, 2014

策略模式形式上其实和装饰者模式,工厂模式都很像,装饰者模式是在原有核心的业务上添加新的业务,工厂模式是在构造函数中传入新类类名,然后返回新的类。而策略模式则是将策略类传入到执行类里,达到执行策略的目的!

工厂模式和策略模式有很多相通的地方。都是创造类。
不同点在于:工厂模式有可能各个类的方法名和个数差别很大,注重不同对象的创建。策略模式 一般用于多个类的方法名都相同,但是实现方式不同 注重多个对象的相同行为:屏蔽方法名相同,算法实现细节不同之间的差异
» Read more: 策略模式及其拓展 C++实现

装饰者模式 C++实现

June 3rd, 2014

装饰者模式就是在原来类的基础上添加额外的功能,这种方式主要是为了应对继承带来的的类膨胀。
装饰者模式比起继承更加灵活,一般来说,基类是抽象的Component还有一个具体的concreteComponent。这个模式的核心就是继承Component的Decorator类。,然后由Decorator类统一管理拓展的业务,也就是新增加的功能。

» Read more: 装饰者模式 C++实现

命令模式 责任链模式 C++实现

May 22nd, 2014

命令模式是一种高内聚的设计模式,这种模式主要有三类角色:
1.Receiver ———–就是实际要具体执行的具体函数
2.Commander ———-执行命令的操作在这里
3.Invoker ———-他是一个调用者的角色,接受Commander然后调用Receiver
这样使得调用方和执行方二者分离开来,实现了解耦。
» Read more: 命令模式 责任链模式 C++实现

中介者模式 C++实现

May 20th, 2014

中介者模式主要是为了解决类之间依赖关系的,有些类之间存在复杂的关系,这导致代码不具有可维护性。
中介者模式把这其中各类交换的函数统一放在mediator里面,每种colleague只需要和mediator交互就可以了。

中介者模式中,每个Colleague 维护一个 Mediator,当要进行通信时,每个具体的 Colleague 直接向 ConcreteMediator 发信息,至于信息发到哪里,则由 ConcreteMediator 来决定。
» Read more: 中介者模式 C++实现