zoukankan      html  css  js  c++  java
  • 设计模式 — 结构型模式 适配器模式

    Adapter 适配器

    已有接口A和B,在不修改A、B的情况下,A要为B所用,这个时候需要一个中间人来承担将A的接口封装成为B可以使用的接口,这里的“中间人”就是适配器——adapter

    目的

    转换接口

    优点

    • 无需改动现有代码
    • 便于在原有系统上进行扩展

    实例

    CoyoteAdapter

    CoyoteAdapter将tomcat 的connector和container进行解耦,connector和container本身属于不同的组件,使用adapter可以方便的更换container而不影响connector

    实现方式

    • 组合:在单继承语言中使用
    • 继承:在多继承的语言里面就可以实现

    UML图

    adapter图

    代码实现

    package org.lep.test.adapter;
    
    /**
     * Created by lack on 17-1-3.
     */
    public interface Target {
        public void service();
    }
    
    package org.lep.test.adapter;
    
    /**
     * Created by lack on 17-1-3.
     */
    public class Adapter implements Target {
        private Adaptee adaptee;
    
        public Adapter(Adaptee adaptee){
            this.adaptee = adaptee;
        }
    
        @Override
        public void service() {
            adaptee.serve();
        }
    }
    
    package org.lep.test.adapter;
    
    /**
     * Created by lack on 17-1-3.
     */
    public class Adaptee {
        public void serve(){
            System.out.println("adaptee`s serve....");
        }
    }
    
    package org.lep.test.adapter;
    
    /**
     * Created by lack on 17-1-3.
     */
    public class Test {
        public static void main(String[] args) {
            Adaptee adaptee = new Adaptee();
            Target adapter = new Adapter(adaptee);
    
            adapter.service();
    
        }
    }
    
  • 相关阅读:
    Sublime Text 3 Build 3143 可用License
    npm安装cnpm报错
    使用proxy来简单的实现一个观察者
    时间倒计时提醒
    JavaScript设计模式
    异步方法(promise版)出错自调用
    co模块源码学习笔记
    go new() 和 make() 的区别
    广度优先搜索算法
    并发和并行有什么区别?(转)
  • 原文地址:https://www.cnblogs.com/sunshine-2015/p/6250582.html
Copyright © 2011-2022 走看看