适配器模式(Adapter Pattern):
适配器模式将一个类的接口,转化成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。
现实生活中有很多适配器的例子,例如:各种电源、各种USB连接线...
这里我们使用狼变成羊的例子,也就是披着羊皮的狼,其中的羊皮就是适配器,要不狼混不到羊群
实践步骤:
1>我们新建一个通用接口(Sheep)
package com.kaishengit.adapter; public interface Sheep { public void run();//跑 public void ho();//叫 }
2>我们新建一个适配器(SheepAdapter):实现Sheep接口
package com.kaishengit.adapter; public class SheepAdapter implements Sheep { private Wolf wolf; /** * 传进被适配对象(狼) * @param wolf */ public SheepAdapter(Wolf wolf){ this.wolf = wolf; } @Override public void ho() { wolf.ho(); } @Override public void run() { wolf.run(); } }
3>我们新建一个被适配对象:狼(Wolf)
package com.kaishengit.adapter; public class Wolf { public void run() { System.out.println("狼跑"); } public void ho(){ System.out.println("狼嚎"); } }
4>最后我们测试一下
package com.kaishengit.adapter; public class Test { public static void main(String[] args) { //狼 Wolf wolf = new Wolf(); //披着羊皮的狼 Sheep sheep = new SheepAdapter(wolf); sheep.run(); sheep.ho(); } }
运行结果:
--------------------
狼跑
狼嚎
--------------------
但是被适配对象的本质没有变
过程:
1>客户通过目标接口调用适配器方法对适配器发出请求
2>适配器使用被适配者接口把请求转化成被适配者的一个或多个调用接口
3>客户接收到调用结果,但并未察觉这一切是适配器在起转换作用
关于适配器模式:
1>当需要使用一个现有的类而其接口不符合你的要求时,就需要使用适配器模式
2>适配器模式将一个对象包装起来改变其接口,装饰者模式将一个对象包装起来增加新的行为戒责任
3>适配器的意图是将接口转换为不同的接口
-----end-----