码迷,mamicode.com
首页 > 其他好文 > 详细

适配器模式

时间:2018-05-10 23:36:04      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:adapter   creat   public   分享   ack   适配器   enc   客户   需求   

模式定义

将一个类的接口,转换成客户期望的另一个接口。适配器模式让原本接口不兼容的类可以合作无间。

类图

技术分享图片

示例


/**
 * 鸭子接口
 *
 * @author Colin
 * @create 2018-05-07
 **/
public interface Duck {
    public void quack();
    public void fly();
}

/**
 * 鸡
 *
 * @author Colin
 * @create 2018-05-07
 **/
public interface Chicken {

    public void Gege();
    public void fly();

}
**
 * 适配器
 *
 * @author Colin
 * @create 2018-05-07
 **/
public class ChickenAdapter implements  Duck {

    private Chicken chicken;

    public ChickenAdapter(Chicken chicken){
        this.chicken=chicken;
    }
    @Override
    public void quack() {
        chicken.Gege();
    }

    @Override
    public void fly() {
        chicken.fly();
    }
}
/**
 * 绿鸭子
 *
 * @author Colin
 * @create 2018-05-07
 **/
public class GreenDuck implements Duck {
    @Override
    public void quack() {
        System.out.println("呱呱叫!");
    }

    @Override
    public void fly() {
        System.out.println("飞起来!");
    }
}

/**
 * 母鸡
 *
 * @author Colin
 * @create 2018-05-07
 **/
public class HenChicken implements Chicken {
    @Override
    public void Gege() {
        System.out.println("母鸡咯咯叫!");
    }

    @Override
    public void fly() {
        System.out.println("母鸡会飞!");
    }
}

public class AdapterTest {


    @Test
    public void testAdapter(){

        GreenDuck greenDuck=new GreenDuck();
        HenChicken chicken=new HenChicken();

        Duck duck=new ChickenAdapter(chicken);
        duck.quack();
        duck.fly();
    }
}

总结

  • 当需要使用一个现有的类,接口并不符合你的需求时,就使用适配器模式
  • 适配器改变接口以符合客户的期望

适配器模式

标签:adapter   creat   public   分享   ack   适配器   enc   客户   需求   

原文地址:https://www.cnblogs.com/coliz/p/9021731.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!