设计模式之禅学习——适配器模式
?
m git :?https://github.com/hejiawang
?
1、适配器模式就是将一个类的接口变成客户端所期待的另一种接口,使客户端能够使用原来因为接口不匹配所导致不能用的接口。
? ? ? ? 好像变压器,像我们的手机电脑,不能直接使用220V的电压,那么通过变压器就能降低电压,使原 ? ? ? ?来不能使用的电压现在变得能够使用。这个变压器就是一个适配。
? ? ? ?下图中,原本A和C是不能够在一起,通过B的适配,AC终成眷属了。。。。
?2、下面看看适配器模式的代码:
需要适配的角色,就像上面图中的A。。
package com.wang.adapterPattern; /** * 适配器模式 </br> 目标角色 * * @author wang * */ public interface Target { /** * 目标角色自己的方法 */ public void request(); }
?它的实现类
package com.wang.adapterPattern; /** * 目标角色实现类 * * @author wang * */ public class ConcreteTarget implements Target { @Override public void request() { System.out.println("ConcreteTarget"); } }
?适配的原角色,就像上图中的C。。
package com.wang.adapterPattern; /** * 适配的源角色 * * @author wang * */ public class Adaptee { /** * 源角色的方法 */ public void doSomething() { System.out.println("Adaptee"); } }
?适配器角色,也就是上图中的B了。。
package com.wang.adapterPattern; /** * 适配器角色 * * @author wang * */ public class Adapter extends Adaptee implements Target { @Override public void request() { super.doSomething(); } }
?
客户端使用情况:
package com.wang.adapterPattern; public class APP { public static void main(String[] args) { Target target = new ConcreteTarget(); target.request(); /** * 适配其他的角色 */ Target targetAdapter = new Adapter(); targetAdapter.request(); } }
?
3、适配器的使用情况很好判断,比如,系统扩展了,需要使用一个已经或新建的类,但是这个类又不符合系统的接口,咋办呢。。。。适配呗。。。中间添加个适配器,搞定。。。。。
原文:http://hejiawangjava.iteye.com/blog/2248335