美文网首页
适配器模式(Adapter)

适配器模式(Adapter)

作者: bin丶 | 来源:发表于2020-12-01 17:10 被阅读0次

    前言

    设计模式系列代码均持续更新在我的gitHub:to github


    I. 适配器模式工作原理

    • 将一个类的接口转换成另一种接口,让原本接口不相兼容的类可以兼容(例如生活中的USB转外接屏幕的转接器 - USB 转 HDMI等 )
    • 从用户的角度来看,被适配类是看不见的,是解耦合的
    • 用户调用适配器转换出来的接口方法,由适配器去调用被适配者的相应接口方法

    II. 适配器模式分类

    • 类适配器
    • 对象适配器
    • 接口适配器

    III. 类适配器模式的类图

    类图

    IV. 类适配器模式代码

    完整代码 github

    • 部分代码
    public class Adapter extends Laptop implements TransferLine {
    
        public Adapter() {
            provideHDMI();
        }
    
        public String provideHDMI() {
            setPort("HDMI");
    
            return getPort();
        }
    }
    
    

    V. 对象适配器模式

    • 对象适配器模式相对于类适配器模式就是将继承关系转为组合关系, 更为符合 合成复用原则
    public class Adapter implements TransferLine {
    
        private Laptop laptop;
    
        public Adapter(Laptop laptop) {
            this.laptop = laptop;
        }
    
        public String provideHDMI() {
            if (laptop != null) {
                laptop.setPort("HDMI");
            }
    
            return laptop.getPort();
        }
    }
    

    VI. 接口适配器模式

    • 当我们仅需要使用某个接口中的某一个方法时,可以使用接口适配器模式
    public interface AdapterInterface {
        void fun1();
        void fun2();
        void fun3();
        void fun4();
    }
    
    /* 以默认方式实现接口所有方法 */
    public abstract class AbstractAdapter implements AdapterInterface {
        public void fun1() {}
        public void fun2() {}
        public void fun3() {}
        public void fun4() {}
    }
    
    /*  不想实现所有接口时,只需实现我们想要的方法就好 */
    public class Client {
        public static void main(String[] args) {
            new AbstractAdapter(){
                @Override
                public void fun1() {
                    System.out.println("=== 接口适配器 ===");
                }
            };
        }
    }
    

    相关文章

      网友评论

          本文标题:适配器模式(Adapter)

          本文链接:https://www.haomeiwen.com/subject/jinjwktx.html