6.适配器设计模式

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.分析

配器模式不适合在详细设计阶段使用它,它是一种补偿模式,专用来在系统后期扩展、修改时所用。

 

posted @ 2017-02-28 12:11  疯狂的肉包  阅读(135)  评论(0编辑  收藏  举报