zoukankan      html  css  js  c++  java
  • 设计模式第一弹—适配器模式

    1、场景

    2、类别

    2.1类代理

     

    // 已存在的、具有特殊功能、但不符合我们既有的标准接口的类
    class Adaptee {
    	public void specificRequest() {
    		System.out.println("被适配类具有 特殊功能...");
    	}
    }
     
     
    // 目标接口,或称为标准接口
    interface Target {
    	public void request();
    }
     
    // 具体目标类,只提供普通功能
    class ConcreteTarget implements Target {
    	public void request() {
    		System.out.println("普通类 具有 普通功能...");
    	}
    } 
     
     
    // 适配器类,继承了被适配类,同时实现标准接口
    class Adapter extends Adaptee implements Target{
    	public void request() {
    		super.specificRequest();
    	}
    } 
     
     
    // 测试类
    public class Client {
    	public static void main(String[] args) {
    		// 使用普通功能类
    		Target concreteTarget = new ConcreteTarget();
    		concreteTarget.request();
    		
    		// 使用特殊功能类,即适配类
    		Target adapter = new Adapter();
    		adapter.request();
    	}
    }
    

      

    2.2对象代理

    // 适配器类,直接关联被适配类,同时实现标准接口
    class Adapter implements Target{
        // 直接关联被适配类
        private Adaptee adaptee;
        
        // 可以通过构造函数传入具体需要适配的被适配类对象
        public Adapter (Adaptee adaptee) {
            this.adaptee = adaptee;
        }
        
        public void request() {
            // 这里是使用委托的方式完成特殊功能
            this.adaptee.specificRequest();
        }
    }
     
     
    // 测试类
    public class Client {
        public static void main(String[] args) {
            // 使用普通功能类
            Target concreteTarget = new ConcreteTarget();
            concreteTarget.request();
            
            // 使用特殊功能类,即适配类,
            // 需要先创建一个被适配类的对象作为参数
            Target adapter = new Adapter(new Adaptee());
            adapter.request();
        }
    }
  • 相关阅读:
    BZOJ 3513: [MUTC2013]idiots(fft)
    BZOJ 2194: 快速傅立叶之二(fft)
    BZOJ 3779: 重组病毒(线段树+lct+树剖)
    LUOGU P3723 [AH2017/HNOI2017]礼物 (fft)
    CF 622F (拉格朗日插值)
    LUOGU P4781 【模板】拉格朗日插值
    bzoj 4184 shallot——线段树分治+线性基
    51nod 1673 树有几多愁——虚树+状压DP
    bzoj 3611(洛谷 4103) [Heoi2014]大工程——虚树
    bzoj 2286(洛谷 2495) [Sdoi2011]消耗战——虚树
  • 原文地址:https://www.cnblogs.com/yuhuameng/p/9727258.html
Copyright © 2011-2022 走看看