说到适配器模式,我就想起那时实习的工作,那时的我还不懂适配器是啥么东西,公司做的是javaweb ,,ssh框架的东西,上头分配的是适配层的东西(话说我到现在还搞不懂TAT)。。。。。貌似连接继承openstack,然后重写那些方法,,,当我学习到适配器模式时,我貌似懂了一些。。。
现在就来介绍下设配器模式---
先来模拟一下场景:
公司设计了一个接口
package com.jing.adapter;
/**
* 客户所期待的接口
* @author Administrator
*
*/
public interface Target {
public void request();
}
然后公司要扩展业务,要用到一个开源的类
package com.jing.adapter;
/**
* 一般情况下的与接口不同的类
* @author Administrator
*
*/
public class UnIdealAdaptee {
public void specificRequest(){
System.out.println("特殊请求");
}
}
这个开源的类的sqecificRequest()函数正是公司所需要的数据,和执行程序。
我们可以用实现的方法 UndealAdaptee去实现Target接口
public class UndealAdaptee implements Target这样的,,,,,但是这样就违反了开闭原则,因此适配器就诞生了。。
package com.jing.adapter;
/**
* 因为预留的接口不合适 因此又不想改动UnIdeaAdaptee类 ,因此又了适配器
* @author Administrator
*
*/
public class UnIdealAdapter implements Target{
private UnIdealAdaptee unIdeaAdaptee = new UnIdealAdaptee();
@Override
public void request() {
unIdeaAdaptee.specificRequest();
}
}
//非理想状态下的 适配器模式
Target unIdealAdapter = new UnIdealAdapter();
unIdealAdapter.request();
这样就是适配器模式了。。。。
================================================================
现在我们来思考一下
如果理想状态的话,我们应该要这样设计我们的开源类。。
package com.jing.adapter;
/**
* 理想状态下的类 根据接口而设计的类
* @author Administrator
*
*/
public class IdealAdaptee implements Target{
public void request(){
System.out.println("特殊请求");
}
}
因此我们可以看到这种模式是很糟糕的,是万不得以才要用到的适配器模式,在设计时应该尽量设计好接口,我们就可以避免这种尴尬的模式了