public interface PinPlug{ void charge(); }
1.概述
适配器设计模式针对如下情况:-----客户需要用某个接口,但是能提供服务的接口没有实现那个接口。
- 客户端只能使用某种接口---客户端是台灯,接口是双孔插座
- 服务端----服务类是三孔插座
- 适配器类是服务类和客户端中间的一个桥接类---插线板
2.代码
适配器模式的分类:
- 类适配器----通过继承实现
- 对象适配器--通过组合实现
2.1类适配器
- 功能描述:为台灯充上电照明(台灯只能使用双孔插座)
-
public interface PinPlug{ void charge(); }
- 1.描述:与台灯配套的插座接口
-
public class ThreePinPlug{ public void specialcharge(){ System.out.println("三孔插座充电"); } }
- 2.描述:不能直接使用的三孔插座
-
public class PinPluginAdapter extends ThreePinPlug implements PinPlug{ public void charge(){ System.out.println("两孔桥接"); super.specialcharge(); } }
- 3.通过继承的方式创建一个把三孔转换为两空的类
-
public class Lamp { private PinPlug pinPlug; public Lamp(){ this.pinPlug=new PinPluginAdapter(); } public void Lignting() { if (pinPlug!=null) { pinPlug.charge(); System.out.println("照明"); }else{ System.out.println("没电"); } } public static void main(String[] args){ Lamp lamp=new Lamp(); lamp.Lignting(); } }
- 4.客户端:台灯
2.2对象适配器---组合的方式
-
public class PinPluginAdapter implements PinPlug{ ThreePinPlug threePinPlug=new ThreePinPlug(); public void charge(){ System.out.println("两孔桥接"); threePinPlug.specialcharge(); } }
3.分析
配器模式不适合在详细设计阶段使用它,它是一种补偿模式,专用来在系统后期扩展、修改时所用。
时间: 2024-11-05 02:21:39