现实中的模式应用

桥接模式

针对接口编程,就是桥接模式

策略模式

策略模式也可看作是针对接口编程

状态模式

状态模式通过 Context 来切换状态,各个状态直接是强关系。切换时直接 new 出下一个状态。

模板方法模式

用来实现框架,规划好调用流程,你来实现,框架调用你。MFC 是一个很差实现。

抽象工厂模式

不同的数据访问族类,比如 oledb 族,oracle 族 等等

大部分时候不要替换 DAO,很少用到。

简单工厂模式

DLL 导出简单工厂函数,由 DLL 导出函数创建对象

工厂方法模式

COM 类厂,自己实现

Builder 模式

windows 窗口是一个大对象,放在上面的各种按钮是小对象,大对象由各种小对象构造而成,构造步骤通常在窗体的初始化函数类,比如 Init()

装饰模式

装饰模式可以做对象方法钩子

享元模式

享元模式实际上可看作个多个对象共享一个对象引用,当然这个对象引用可以用对象管理器管理器来,比如 map,然后通过 key 来查询

迭代器模式

迭代器模式就是各种集合类的迭代接口统一,循环遍历统一,通过自己的对象方法返回迭代器接口,迭代器的实例化 new 的时候传 this 指针

Observer 模式

典型的一对多,相同的事件可注册多个观察者,如果没有事件管理器,那么业务类直接实现 Observer 接口,可接受观察者订阅。如果有事件管理器,观察者可能直接连在事件管理器上,不与业务对象交互,业务对象直接发送事件即可。

如果是一对一,那么可直接看作聚合了一个简单的回调接口。

代理模式

远程方法调用代理

Visitor 模式

accept 可看作是一个不保持对象引用的 set 构造子,只不过在接受之后直接调用了 Visitor 的 Visit 方法,并将 this 指针传入。这样的好处是,迭代时,不同的被访问者都可以被相同的 Visitor 访问,调用相同的 Visit 方法,当然这个 Visit 方法是重载的。

Dispatcher 模式

网络协议分派,不同的协议由不同的 handler 来响应,dispatcher 可注册 handler,

如果是事件分发器,可以一个事件对应多个 handler。

你可能感兴趣的:(现实中的模式应用)