现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

对设计模式的一些理解

2020-04-03 17:18 工业·编程 ⁄ 共 1173字 ⁄ 字号 暂无评论

1. 把变化的部分都用组合、聚合或依赖实现,不变的部分用继承实现

     Visitor模式, 将经常删减的操作中继承体系中提炼出来,成为操作类,每个类中的操作对应原有的不变的继承体系

     Strategy模式,将可扩充的算法使用依赖实现;接口抽闲出来

     Observer模式,将观察者放在被观察者的依赖列表中;不变的update部分使用继承实现,各个观察者各自实现update接口

     Interpreter模式,将可变的解释算法使用依赖来应用,不变的算法接口使用继承实现

     Command模式,将可变的Command类型用依赖实现,不变的Command接口用继承实现

2. 提炼公共的部分

     模板方法,将公共的流程在父类中体现,具体各步骤在子类中实现

     State模式,将公共的接口提炼出来

     Memento模式,针对每个对象类,都有一个对应的记忆类,每个类实现各自的记忆类;再有统一的算法和管理器进行管理

     Mediator模式,由他统一调度所有的下面的接口,接口由中介类封装

     Iterator模式,将遍历接口和算法抽象出来

     Fyiweight模式,将公共的部分放在基类中

     Composite模式,将组合和递归在基类中实现

     Singleton模式,将判断唯一放在static中实现

3. 在运行中可变

     如State模式,相比原有的switch/case以数组map模式,此模式能够在运行时进行变更

     如Strategy模式,通过依赖,可在运行中变更策略

     decorator模式,在运行中决定新增功能(相对Proxy模式),通过继承来扩展不同的装饰

4. 解耦

     Mediator模式,各个子模块之间无交互了, 多对多变成了1对多的模式; CC中的Task有中介者的意思

     Observer和Subject解耦, 即Subject无需关心Observer是如何实现的,是再做什么

     Iterator模式,将接口和遍历算法解耦

     Command模式,将调用者和接收者解耦

     Responsibility chain模式,将每一个执行的对象解耦,不需要关注最终的执行效果

     Bridge模式,将接口扩展和实现扩展解耦;实现从其接口中解耦出来

5. 少改动进行扩充

     Proxy模式, 接口保持不变,不变更原有类的情况下, 在原有的基础上,扩充新的功能

     Adapter模式, 将现有系统和第三方系统很好的整合在一起,现有系统没做改动,第三方系统也没做改动

6. 降低使用难度

     Facade模式,将多个对象的接口在一个对象中封装好,并提供出去,即调用者只和一个对象打交道

     Mediator模式,将多个对象的交互在一个对象中管理,调用者只需要和Mediator打交道

作者:王振中

给我留言

留言无头像?