关于设计模式

1.  依赖倒置原则: 面向接口(抽象)编程,  上层 ==> 接口 <==  下层

2.  单一职责原则 : 一个类负责一件事

3.  开放-封闭原则:对扩展开放,对修改关闭

4.  迪米特法则:没必要直接通信就不要通信(最小知识原则)

5.  外观模式:将复杂子系统接口进行整合,向客户端开放简单的接口,方便调用

6.  建造者模式:把对象创建的过程抽象出来(Builder),然后子类(XXXBuilder)实现,规范了对象创建的流程

     感觉与模板方法模式、工厂方法模式有些类似

     当复杂对象难以通过简单构造函数初始化时,可以考虑使用建造者模式,使用 Builder 构建

7.  观察者模式:通知者维护一个观察者(对象引用)列表,当事件发生时调用其对应方法通知观察者采取一定动作

     主要是用到了回调机制,因为观察者和通知者种类可能会很多,最好都进行抽象,面向抽象接口编程

     

8.   状态模式:当在不同状态需要采取不同的处理方式时,

      定义一个状态抽象类,各个具体状态类只关注本状态下的操作,包括状态的切换

      例如,不同状态(时间点)下写程序是不一样的,则工作类不直接处理写程序,而是通过调用状态的写程序方法完成

      将与状态有关的操作封装到具体的状态类中,简化了工作中写程序函数的复杂度

      

9.   适配器模式:跟装饰器模式比较像,但适配器模式的目的不是功能增强,而是使旧实现有新调用接口,

      而且适配器类实现的抽象接口不一定是被适配的对象的抽象接口,而应该是调用者需要的抽象接口(target接口)

      装饰器模式下,装饰器应该能够代替被装饰对象,因此需要实现被装饰对象的抽象接口

      注意,接口不同时,应该优先考虑重构接口,无法解决时才用适配器

10.  原型模式:简单理解成对象克隆,无需关注实例化细节

11.  备忘录模式:将需要保存的状态信息交给单独的备忘录类封装,对象载入状态和存储状态仅针对该备忘录类编程

       客户端就无需关注状态的具体内容了,它只知道备忘录就好了

       例如,游戏角色保存状态和恢复状态,不是具体操作生命力等属性,而是操作角色状态存储箱

       而角色状态存储箱交给角色状态管理者管理(get/set 角色状态存储箱),封装了细节

       

12.  组合:汽车和轮子的关系(紧密关系)

       聚合:鸽子和鸽群(松散关系)

13.  组合模式:核心思想是,处理单个(部分)和处理多个(整体)的方法是一样的(比如 word 中文字加粗)

       因为基于同一个抽象接口,子类遇到不应该支持的方法的时候,可以抛出 UnSupport 异常,

       从而用统一接口,屏蔽差异

       组合对象可以任意增加组合的复杂度,组成层次结构,而对于客户端来说处理方法都是一样的(相同抽象)

       

14.  迭代器模式:很多语言已经内置,遍历集合使用

15.  组合优先于继承,继承会增加耦合程度

       使用继承应该是 is-a 的关系下才考虑的

16.  桥接模式:将抽象与实现分离,抽象把实现组合进来,通过操作实现完成功能

       通过组合实现,就可以按需使用不同的实现完成功能了

       比如:手机具有通讯录、MP3 功能的抽象,

       具体实现上可以组合 通讯录 v1 和 MP3 v2,也可以组合  通讯录 v2 和 MP3 v1,十分灵活

       

17.   命令模式:相当于菜单,菜单记录了要做的事,厨师解析菜单制作即可,解耦了客户和厨师

        菜单命令,包含着要做的菜和接收者(厨师),实现菜单命令抽象接口

        服务员不关心怎么做,按照客户需求创造命令(菜单),调用菜单命令的抽象执行方法即可

        接下来的任务就交给命令接收者厨师负责了

        该模式使得请求能够支持存储、排队、撤销、恢复等功能!高并发下是不是可以用这个模式把请求排队呢?

18.  职责链模式:相当于过滤器链似的,每个处理 handler 都有后继,自己处理不了的交给后继节点处理

19.  中介者模式:相当于联合国,各国不需要直接交互,通过联合国交互即可

       滥用中介者模式可能造成中介者太过复杂

20.  享元模式:运用共享技术有效地支持大量细粒度的对象,单例模式其实也可以看作是享元模式的一种具体案例

21.  解释器模式:类似于开发了一门新语言,解释器解释语言的含义

       MP3 播放器解释 MP3 文件的含义,播放音乐

22.  访问者模式:使用独立的 visitor 处理自己的元素,而不是自己直接处理

        这样在变更操作的时候,更换 visitor 就可以了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值