设计模式学习(六) ------- 适配器与外观
来源:互联网 发布:淘宝hd ios历史版本 编辑:程序博客网 时间:2024/04/30 03:01
适配器模式:
经常碰到当你需要使用某个类时, 发现它的接口不符合你的要求,比如你要一只鸭子,但是手上只有火鸡,那怎么办?
你可以说写个新的Duck class , 但是现实是不能创建新的类的,所以我们需要想个办法使火鸡来代替鸭子
how??
适配器help us , 它使Turky能够作用
首先我们写个
public class TurkyDuck implements Duck{
private Turky turky;
public void setTurky(Turky turky){
this.turky = turky;
}
@Override
public void qurk(){
turky.bell();
}
public void dkfj(){
turky.eirio();
}
}
You now see the Point , did you?
we can use the TurkyDuck class to fit the need by use the method of the Turky
通过实现Target接口,调用被适配的接口的方法,来实现Target接口的方法,偷天换日!!!
这里Target是Duck
被适配的是Turky
这种适配方式也被称作对象适配器
还有一种适配方式是,类适配器,需要多重继承,即继承Duck和Turky(Java中不行)
当然这两种适配方式,各有优缺
对象适配器: 首先它是组合方式加入了被适配的对象,因此灵活性配高,还可以适配被适配对象的子类
当然弹性更好
类适配: 他不需要实现Target接口的每个方法,只需要一个适配器类(对象适配需要两个:适配器类和被适配类)
总之,适配器将客户与接口的实现解耦,客户并不了解适配的过程,并不知道其实是被适配类在工作,同时适配器可以包含多个被适配的类一起工作。
适配器与装饰的区别:
适配器是间接的改变被适配接口的类型,使其看上去符合Target接口而被调用工作——仅仅是重写(用被适配类的方法,实现Target接口)
装饰是对Target进行包装而使其增加功能——(这是扩展)
外观模式:
有时候为了实现某个任务,我们需要调用多个对象的多个方法,十分的繁琐,比如你想使用家庭影院看电影,你要打开电源,打开DVD,放入片子,调好声音 等等
是想你每次要看就要重复上面的动作,如果上面涉及了10个对象,20个方法,要写100行,难道每次都去写吗,肯定不是的,肯定是不合理的
其实,现实中coding肯定已经用到了外观模式,就是简化
碰到上面的问题,我们一般会写个方法,将所有的操作封装起来,下次只要调用这个方法就可以了,这就是外观的一种应用(我觉得)
当然更正式 的外观模式,是指你写个单独的类Theater,写个单独的方法封装上面的一系列操作,当然对于家庭影院的其他操作写可以写方法封装起来
总之,客户只要一个Theater的对象,就可以了,而不需要与什么10个小对象耦合
这里我们可以看到OO设计原则的影子
OO原则——最少朋友(Least Friend)
可以解释为: 每个类尽量少的与其他类耦合在一起
一般来说,对于对象的使用有这么几个条件:
方法中可以使用传进来的对象
使用方法中new 的对象
使用类的实例变量
对象本身
其他的对象最好不要用(如System.out.println(""));
你可以看到这里就耦合了PrintOutStream 当然为了方便可以这么做,
但是不提倡,因为这样增加了维护的困难
总结一下:
装饰——扩展
适配——改变接口
外观——简化
这是三种相似模式的目的
- 设计模式学习(六) ------- 适配器与外观
- 设计模式笔记(六)--适配器模式、外观模式
- 设计模式学习之适配器与外观模式
- 设计模式--适配器模式与外观模式
- 设计模式-适配器模式与外观模式
- 设计模式之适配器与外观模式
- 设计模式(适配器模式,外观模式)
- iOS与设计模式六:外观模式
- 设计模式学习笔记十四:适配器模式、桥接模式与外观模式
- 设计模式学习笔记十四:适配器模式、桥接模式与外观模式
- 适配器与外观模式
- 懒羊学习《深入浅出设计模式》C#代码手札之适配器模式与外观模式
- [学习笔记]设计模式[6]-{适配器模式&外观模式}
- 设计模式之适配器模式与外观模式
- 初识设计模式 chapter 07-适配器模式与外观模式
- HeadFirst 设计模式 7适配器模式与外观模式
- Head First 设计模式之适配器模式与外观模式
- 设计模式之适配器模式与外观模式
- 常用的求和公式(级数求和)
- 《南京印象》之二《石城疏影》
- 变速齿轮
- Visual C# 对话框全接触
- 前途,征途
- 设计模式学习(六) ------- 适配器与外观
- 三大因素致6月PPI同比降幅扩大工业品供过于求
- 新疆上半年工业品价格总水平创十七年新低
- Prototype 学习——Template对象
- 经济企稳向好 增长压力尚存
- 湖北工业经济整体企稳回升 轻工业增长22.1%
- linux下java unrecognized class file version错误的解决
- Flex优秀开源项目介绍
- 知性群落