模式定义
适配器模式:将一个借口转化成客户希望的另一个接口,适配器模式使接口不兼容的类可以一起工作。
模式结构图
模式分析
适配器有如下几个角色
1.Target(目标抽象类)
定义客户要用的特定领域的接口,可以是个抽象类或借口,也可以是具体类。
2.Adapter(适配器类)
适配器类可以调用另一个接口,作为一个转化器,对Adaptee和Target进行适配,适配器Adapter是适配器模式的核心,在类适配器中,他通过实现Target接口并继承类来使两者修昂胡联系。
3.Adaptee(适配者类)
适配者即被适配的角色,它定义了一个已经存在的接口。这个接口需要适配,适配类一般是一个实体类,它包含了客户希望使用的业务方法。
4.Clientlei(客户类)
针对目标抽象类进行编程。
优点:
(1)将目标类和适配类解耦
(2)增加了类的透明性和复用性
(3)灵活性和扩展性很好
缺点:
(1)java,C#不支持类的多重继承。
机器人模仿狗案例
机器人接口类
package com.zck.adapter; //仿生机器人接口 public interface Robot { public void cry(); public void move(); }
狗实体类
package com.zck.adapter; public class Dog { public void wang(){ System.out.println("狗汪汪叫"); } public void run(){ System.out.println("狗快快跑"); } }
狗适配器类
package com.zck.adapter; public class DogAdapter extends Dog implements Robot { public void cry() { System.out.println("机器人模仿"); super.wang(); } public void move() { System.out.println("机器人模仿"); super.run(); } }
客户端类
package com.zck.adapter; public class Client { public static void main(String[] args) { DogAdapter dogAdapter = new DogAdapter(); Robot robot = dogAdapter; robot.cry(); robot.move(); } }
测试结果