学习设计模式主要是学习它的模式也就是他的思想然运用到实践中,不用关心它是怎么实现的。
将需求转化为模式思想,然后再将功能转化为代码!
观察模式
消息订阅者和订阅服务器。两者依赖关系。当订阅服务器的消息改变时,订阅者的消息也会改变。
例子:订阅者先再服务器注册,当服务器发消息A时,订阅者根据A消息内部自己转化为不同的消息
桥接模式
颜色类+形状类=多个颜色+形状的图形,中间需要一个桥来完成。多个维度的组合。
适配器模式
当两个接口没有直接的关系的时候用第三方将两个关联起来
读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。
装饰模式
为已有对象增加功能。
例子:人有说话的功能,可以再装饰打人的功能。
代理模式
改变已有对象的行为
例子:商品厂家直销售,代理商销售,商品还是原来的商品但是销售方式不同
工厂模式
不同的工厂可以生产不同的对象
例子:书进入不同的工厂产生出不同的书,如语文书,数学书。产生了不同的对象。
外观模式
将所有功能封装为一个整体
例子:电脑有CPU,内存,硬盘,关机时通过关闭电脑所有的功能都关闭。
模板方法
完成某一个功能,有几个固定的步骤,但每个步骤的实现根据具体对象的不同,实现的细节也不同。模板方法模式可以让具体的实现细节由子类来完成,而在父类中定义好骨架。
责任链模式
首先定义责任链,A->B->C。请求进入责任链,根据请求的灯具走模式可以走A->B->C,也可以走B->C,或者直走C。
建造者模式
将构建整体的过程,拆分成构建部分的过程,将构建部分的顺序抽来进行自定义构建整体需要那些部分的组件。
工厂模式
工厂方法:一个工厂生产一种产品
抽象工厂:一个工厂生产多个相同的产品。且这个工厂有一个父类的抽象类。
组合模式
构建多个相同属性但是属性值不同的对象。例如构建省市区对象。
命令模式
发起者和执行者中间加一个遥控者,可以后撤销操作实现就是记录前一布的操作和状态。