单例模式
定义
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
我的理解
分出一个Singleton类封装对象的唯一实例
例子
计划生育,父母(Singleton类)需要确保只生一个孩子
应用场景
当需要对唯一实例,进行受控访问的时候
桥接模式
定义
合成/聚合复用原则
尽量使用合成/聚合,尽量不要使用类继承。
桥接模式
将抽象部分与它的实现部分分离,使它们可以独立地变化。
我的理解
合成/聚合的意思,就是建立更高一级别的类,来作为子类的统一接口
桥接模式其实就是对该原则的运用,我们需要搭建一座桥梁,来连接高级类和子类
例子
将通讯录、游戏、邮箱等抽象在手机软件类下面,而不是直接继承自手机品牌
应用场景
将类和类继承层次限制在比较小的规模
命令模式
定义
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。
我的理解
在请求者和实现者之间,添加一个命令类,增加操作的余地
例子
在顾客和厨师之间,添加一个服务员
应用场景
- 比较容易地设计一个命令队列;
- 在需要的情况下,可以较容易地将命令记入日志;
- 允许接收请求的一方决定是否要否决请求;
- 容易地实现对请求的撤销和重做;
- 由于加进新的具体命令类不影响其他的类,因此增加新的具体命令类很容易;
- 命令模式把请求一个操作的对象与知道怎么执行一个操作的对象分隔开。
职责链模式
定义
使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。
我的理解
和原来工作状态例子类似,定义一个状态链,进行转换,这里换了个说法而已
例子
小菜请求涨工资,请求沿着经理、总监和总经理的职责链向上传递
应用场景
职责链可简化对象的相互连接,它们仅需保持一个指向其后继者的引用,而不需保持它所有的候选接受者的引用。
中介者模式
定义
用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。
我的理解
好像还是一个中间桥梁的概念吧,和桥接模式没有什么区别
例子
为各个国家设置一个联合国的安理会,处理各种事件
应用场景
中介者模式一般应用于一组对象以定义良好但是复杂的方式进行通信的场合