我理解的设计模式之适配器模式
2017-08-13 12:47
211 查看
适配器模式
含义:
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
使用心得:
现有的类的接口不符合我们所期望的使用效果的接口,可以使用此模式 然而他的缺点:过多的使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是A接口,其实内部被适配成了B接口的实现,一个系统如果太多出现这种情况,无异于一场灾难。因此如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。优点就是不变动现有接口,从而达到所想要的效果,提高效率和代码复用扩展性
举例:网上的 插座插头,电压的介绍已经烂大街
说下理解吧:适配有类和对象的适配 具体情况自己选 一般是对象 组合》继承
拿的图谅解,来打我啊
1.我们所现有的接口 Adapee
2.我们想要的东东 Target
3.将现有鼓捣成想要的 Adapter
咋弄?
/**
* 现有的类或接口
* (我是5w灯泡)
* @author lizhen
*
*/
public class Adapee {
//5w灯泡
public void bulbOfFive(){};
//110f
public int voltageOFFive() {
return 110;
}
}
/**
* 想要的接口
* (7w的灯泡)
* @author lizhen
*
*/
public interface Target {
//7w灯泡
void bulbOfSeven();
//电压220f
int voltage();
}
/**
* 类的适配
* 继承了被适配类,同时实现标准接口
* @author lizhen
*
*/
public class Adapter extends Adapee implements Target{
@Override
public void bulbOfSeven() {
//5w转7w
}
@Override
public int voltage() {
//110f转220f
return super.voltageOFFive() * 2;
}
}
/**
* 对象的适配
* has-a ,实现想要接口
* @author lizhen
*
*/
class Adapter2 implements Target{
private Adapee adapee;
// 可以通过构造函数传入具体需要适配的被适配类对象
public Adapter2 (Adapee adaptee) {
this.adapee = adaptee;
}
@Override
public void bulbOfSeven() {
// 5w转7w
}
@Override
public int voltage() {
//110f转220f电压
return adapee.voltageOFFive() * 2;
}
}
/**
* 使用
* @author lizhen
*
*/
public class main {
public static void main(String[] args) {
//类转换
Adapter adapter=new Adapter();
adapter.bulbOfFive();//原有的灯泡
adapter.voltageOFFive();//110f
adapter.bulbOfSeven();//转换灯泡
adapter.voltage();//110转换电压220
//对象转换
Adapee adapee=new Adapee();//现有的灯泡
Adapter2 adapter2=new Adapter2(adapee);
adapter2.bulbOfSeven();////转换灯泡
adapter2.voltage();//110转换电压220
}
}
缺省适配(Default Adapter)模式
摘抄于 http://www.cnblogs.com/java-my-life/archive/2012/04/13/2442795.html
为一个接口提供缺省实现,这样子类型可以从这个缺省实现进行扩展,而不必从原有接口进行扩展。作为适配器模式的一个特例,缺省是适配模式在JAVA语言中有着特殊的应用
他的例子举的很生动,很有感觉 ---------------------------鲁智深的故事
从这个故事你知道了什么?
接口定义的泛指,然而显示总有那么几个刁民,不遵从,这个时候可以使用啦
从而可以解决没有用的方法实习
对于特殊的子类,可以使用这个特殊的模式
适配器模式的用意是要改变源的接口,以便于目标接口相容。缺省适配的用意稍有不同,它是为了方便建立一个不平庸的适配器类而提供的一种平庸实现。
总结:能力有限,望批评指教。
含义:
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
使用心得:
现有的类的接口不符合我们所期望的使用效果的接口,可以使用此模式 然而他的缺点:过多的使用适配器,会让系统非常零乱,不易整体进行把握。比如,明明看到调用的是A接口,其实内部被适配成了B接口的实现,一个系统如果太多出现这种情况,无异于一场灾难。因此如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。优点就是不变动现有接口,从而达到所想要的效果,提高效率和代码复用扩展性
举例:网上的 插座插头,电压的介绍已经烂大街
说下理解吧:适配有类和对象的适配 具体情况自己选 一般是对象 组合》继承
拿的图谅解,来打我啊
1.我们所现有的接口 Adapee
2.我们想要的东东 Target
3.将现有鼓捣成想要的 Adapter
咋弄?
/**
* 现有的类或接口
* (我是5w灯泡)
* @author lizhen
*
*/
public class Adapee {
//5w灯泡
public void bulbOfFive(){};
//110f
public int voltageOFFive() {
return 110;
}
}
/**
* 想要的接口
* (7w的灯泡)
* @author lizhen
*
*/
public interface Target {
//7w灯泡
void bulbOfSeven();
//电压220f
int voltage();
}
* 类的适配
* 继承了被适配类,同时实现标准接口
* @author lizhen
*
*/
public class Adapter extends Adapee implements Target{
@Override
public void bulbOfSeven() {
//5w转7w
}
@Override
public int voltage() {
//110f转220f
return super.voltageOFFive() * 2;
}
}
/**
* 对象的适配
* has-a ,实现想要接口
* @author lizhen
*
*/
class Adapter2 implements Target{
private Adapee adapee;
// 可以通过构造函数传入具体需要适配的被适配类对象
public Adapter2 (Adapee adaptee) {
this.adapee = adaptee;
}
@Override
public void bulbOfSeven() {
// 5w转7w
}
@Override
public int voltage() {
//110f转220f电压
return adapee.voltageOFFive() * 2;
}
}
/**
* 使用
* @author lizhen
*
*/
public class main {
public static void main(String[] args) {
//类转换
Adapter adapter=new Adapter();
adapter.bulbOfFive();//原有的灯泡
adapter.voltageOFFive();//110f
adapter.bulbOfSeven();//转换灯泡
adapter.voltage();//110转换电压220
//对象转换
Adapee adapee=new Adapee();//现有的灯泡
Adapter2 adapter2=new Adapter2(adapee);
adapter2.bulbOfSeven();////转换灯泡
adapter2.voltage();//110转换电压220
}
}
大体就是将5w灯泡110f变成我想的7w灯泡220f 这里现有的类 也可以是接口 自己动手弄一下吧
缺省适配(Default Adapter)模式
摘抄于 http://www.cnblogs.com/java-my-life/archive/2012/04/13/2442795.html
为一个接口提供缺省实现,这样子类型可以从这个缺省实现进行扩展,而不必从原有接口进行扩展。作为适配器模式的一个特例,缺省是适配模式在JAVA语言中有着特殊的应用
他的例子举的很生动,很有感觉 ---------------------------鲁智深的故事
从这个故事你知道了什么?
接口定义的泛指,然而显示总有那么几个刁民,不遵从,这个时候可以使用啦
从而可以解决没有用的方法实习
对于特殊的子类,可以使用这个特殊的模式
适配器模式的用意是要改变源的接口,以便于目标接口相容。缺省适配的用意稍有不同,它是为了方便建立一个不平庸的适配器类而提供的一种平庸实现。
总结:能力有限,望批评指教。
相关文章推荐
- 深入理解JavaScript系列(39):设计模式之适配器模式
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- 深入理解JavaScript系列(39):设计模式之适配器模式详解
- 深入理解JavaScript系列(39):设计模式之适配器模式详解
- 深入理解JavaScript系列(39):设计模式之适配器模式
- 极速理解设计模式系列:6.适配器模式(Adapter Pattern)
- Java23种设计模式——深入理解对象适配器模式与抽象外观模式
- 极速理解设计模式系列:6.适配器模式(Adapter Pattern)
- 深入理解JavaScript系列(39):设计模式之适配器模式
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- 深入理解JavaScript系列(39):设计模式之适配器模式
- 简单理解常用设计模式(十一)适配器模式
- 个人对设计模式的理解-->适配器模式
- 我所理解的设计模式(C++实现)——适配器模式(Adapter Pattern)
- 深入理解JavaScript系列(39):设计模式之适配器模式
- 深入理解JavaScript系列(39):设计模式之适配器模式
- 深入理解JavaScript系列(39):设计模式之适配器模式
- 深入理解JavaScript系列(39):设计模式之适配器模式