设计模式

java适配器模式

2018-09-18  本文已影响9人  韭菜待收割

1、适配器模式的定义

适配器就是一种适配中间件,用于连接不匹配的二者,实物可以对照转接头。

2、适配器模式的分类

1)类适配器:通过继承来实现适配器功能。

//懒,就写一起了
public class MainTest {
    //测试方法
    public static void main(String[] args) {
        Adapter adapter = new Adapter();
        adapter.useRMB();
    }
    //适配器
    public static class Adapter extends YouXiBi implements IRMB{
        @Override
        public void useRMB() {
            //RMB没办法直接买装备,转换成游戏币再购买
            useYouXiBi();
        }
    }
    //RMB接口
    private interface IRMB{
        void useRMB();
    }
    //游戏币接口
    private interface IYouXiBi{
        void useYouXiBi();
    }
    //游戏币使用
    public static class YouXiBi implements IYouXiBi{
        @Override
        public void useYouXiBi() {
            System.out.println("我使用100游戏币买了一件装备");
        }
    }
}

2)对象适配器:通过组合来实现适配器功能。(可以看作类适配器)

//懒,就写一起了
public class MainTest {
    //测试方法
    public static void main(String[] args) {
        IYouXiBi iYouXiBi = new YouXiBi();
        Adapter adapter = new Adapter(iYouXiBi);
        adapter.useRMB();
    }
    //适配器
    public static class Adapter extends YouXiBi implements IRMB{
        IYouXiBi iYouXiBi;
        Adapter(IYouXiBi iYouXiBi){
            this.iYouXiBi = iYouXiBi;
        }
        @Override
        public void useRMB() {
            //RMB没办法直接买装备,转换成游戏币再购买
            iYouXiBi.useYouXiBi();
        }
    }
    //RMB接口
    private interface IRMB{
        void useRMB();
    }
    //游戏币接口
    private interface IYouXiBi{
        void useYouXiBi();
    }
    //游戏币使用
    public static class YouXiBi implements IYouXiBi{
        @Override
        public void useYouXiBi() {
            System.out.println("我使用100游戏币买了一件装备");
        }
    }
}

3)接口适配器:通过抽象类来实现适配器功能。
使用场景:想要使用接口中的某些方法,但是不想实现全部的方法,可以使用抽象类来实现接口(这个抽象类就是适配器),仅对方法进行置空,然后我们再继承这个抽象类来通过重写想用的方法的方式来实现。

//懒,就写一起了
public class MainTest {
    //测试方法
    public static void main(String[] args) {
        IYouXiBi iYouXiBi = new YouXiBi();
        iYouXiBi.useYouXiBi1();
    }
    //使用YouXiBi
    public static class YouXiBi extends Adapter{
        //游戏币买头盔
        public void useYouXiBi1(){
            System.out.println("游戏币买头盔");
        }
    }
    //游戏币接口
    private interface IYouXiBi{
        //游戏币买头盔
        public  void useYouXiBi1();
        //游戏币买腰带
        public void useYouXiBi2();
        //游戏币买上衣
        public  void useYouXiBi3();
        //游戏币买内裤
        public  void useYouXiBi4();
    }
    //适配器
    public static abstract class Adapter implements IYouXiBi{
        //游戏币买头盔
        public  void useYouXiBi1(){}
        //游戏币买腰带
        public void useYouXiBi2(){}
        //游戏币买上衣
        public  void useYouXiBi3(){}
        //游戏币买内裤
        public  void useYouXiBi4(){}
    }
}
上一篇 下一篇

猜你喜欢

热点阅读