zoukankan      html  css  js  c++  java
  • 适配器模式

    适配器模式使用场景

    例如:用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器(适配器)就能解决此问题

    类适配器模式

    public interface Target {
        /**
         * 这是源类Adaptee也有的方法
         */
        public void sampleOperation1(); 
        /**
         * 这是源类Adapteee没有的方法
         */
        public void sampleOperation2(); 
    }
    public class Adaptee {
        public void sampleOperation1(){}
    }


    public class Adapter extends Adaptee implements Target {
        /**
         * 由于源类Adaptee没有方法sampleOperation2()
         * 因此适配器补充上这个方法
         */
        @Override
        public void sampleOperation2() {
            //写相关的代码
        }
    
    }

    对象适配器模式
    public interface Target {
        /**
         * 这是源类Adaptee也有的方法
         */
        public void sampleOperation1(); 
        /**
         * 这是源类Adapteee没有的方法
         */
        public void sampleOperation2(); 
    }
    public class Adaptee {
    
        public void sampleOperation1(){}
        
    }

    public class Adapter {
        private Adaptee adaptee;
        
        public Adapter(Adaptee adaptee){
            this.adaptee = adaptee;
        }
        /**
         * 源类Adaptee有方法sampleOperation1
         * 因此适配器类直接委派即可
         */
        public void sampleOperation1(){
            this.adaptee.sampleOperation1();
        }
        /**
         * 源类Adaptee没有方法sampleOperation2
         * 因此由适配器类需要补充此方法
         */
        public void sampleOperation2(){
            //写相关的代码
        }
    }

    总结:适配器拥有被适配对象(插座)缺失方法。
  • 相关阅读:
    染色问题的算法(转)
    函数的定义域和定义区间的区别(转)
    详解c++指针的指针和指针的引用(转)
    母函数(转)
    别人整理的DP大全(转)
    HDU 1430 魔板(康托展开+BFS+预处理)
    ZZULIOJ 1726 迷宫(BFS+小坑)
    NBUT 1635 Explosion(最小顶点覆盖)
    NBUT 1602 Mod Three(线段树单点更新区间查询)
    NBUT 1028 该减肥了(简单递推)
  • 原文地址:https://www.cnblogs.com/chenweichu/p/5601894.html
Copyright © 2011-2022 走看看