标签:span 有一个 应该 任务 模式 iter 接口 复杂 nbsp
1.Structural Patterns(结构模式)
1.Adapter 适配器
将某个类/接口转换为client期望的其他形式
通过增加一个接口,将已存在的子类封装起来,client面向接口编程,从而隐藏了具体实现子类
举例说明:
如果有一个类LegacyRectangle中一个方法展示一个左上角为(x1,y1),右下角为(x2,y2)的方法display
但是客户端只能提供左上角坐标(x1,y1)和高和宽
那么就可以新建一个类Rectangle是适配器,提供display方法为适配方法,将(x1,y1)和高和宽转化成左上角为(x1,y1),右下角为(x2,y2),然后调用LegacyRectangle中的方法满足客户端的需求
在考虑到 依赖转置原则
delegation的时候要通过interface建立关系,而非具体子类
Rectangle实现接口Shpae,在客户端声明适配器类时的语句为 Shape s =new Rectangle();
2.Decorator 装饰器
用每个子类实现不同的特性,并且可以简单实现特性的任意组合
为对象增加不同的侧面特性,对每一个特性构造子类,通过委托机制增加到对象上
组成部分
1.公共接口,装饰器,实现各个侧面的子类均需要实现
2.装饰器,一般是抽象类
3.实现各个侧面的子类
4.用来装饰的基本类,装饰的起点在这里
例子:装饰一个图形,画出不同形状,不同颜色的图形
公共接口
装饰器
用来装饰的基本类
形状:
颜色:
使用:
例子稍有不恰当地方在于颜色输入颜色,形状则是“画形状”,l两个不在同一个平面。
使用装饰器模式可以对画这一动作进行装饰,有对应的用来画形状的类,其中有各种设置颜色,形状,线条粗细,大小的方法
在各个侧面类中进行设置,设置完之后画形状,也是对装饰器类的一个应用
3.Facade 门面模式,外观模式
客户端需要通过一个简化的接口来访问系统内复杂的功能,提供一个统一的接口,对复杂的系统做了一个封装,简化客户端使用
2.Behavioral Patterns (表现模式)
1.Strategy 策略模式
有多个不同的算法来实现同一个任务,但是需要client根据需要动态切换算法,就可以使用策略模式
1.提供一个统一的接口类,各个策略纪要完成这一目标
2.提供各个策略类:实现这一接口,完成方法
3.使用
在使用类内采用委托的方式委托对应的策略完成方法
2.Template method 模板模式
做事情的步骤一样,但是具体的方法不同
共性的不走在抽象类内公共实现,差异化的步骤在子类中实现
使用继承和重写实现模板模式
模板模式在framework中被广泛使用
3.Iterator 迭代器
客户端希望遍历被放入容器/集合类中一组ADT对象,无需关心容器的具体类型
不管对象被放进哪里,都应该提供同样的遍历方式
容器例如List,可以返回一个itreator对象
标准的遍历协议协议由以下3个方法组成
next() //下一个 isDone() //是否结束? currentItem() //当前
Java内提供了Itreator接口,自己实现迭代器可实现这个接口
标签:span 有一个 应该 任务 模式 iter 接口 复杂 nbsp
原文地址:https://www.cnblogs.com/guiququ/p/13179754.html