• 设计模式--适配器模式Adapter(结构型)


    一、适配器模式

    适配器模式的主要作用是在新接口和老接口之间进行适配。将一个类的接口转换成客户端期望的另外一个接口。其实适配器模式有点无赖之举,在前期设计的时候,我们就不应该考虑适配器模式,而应该通过重构统一接口。

    二、适配器模式分为类适配器模式和对象适配器模式

    类适配器模式:适配器使用多重继承对一个接口与另外一个接口进行匹配。

    对象适配器模式:适配器在新接口中利用已有类的实例来实现接口的匹配。

    三、UML图

    类适配器模式

    对象适配器模式

    四、示例

    类适配器模式

    package com.visionsky.DesignPattern; 
     
    interface Target { 
        void Request(); 
    } 
     
    class Adaptee { 
        void SpecificRequst() { 
            System.out.println("Adaptee's SpecificRequst"); 
        } 
    } 
     
    class Adapter extends Adaptee implements Target  
    { 
     
        @Override 
        public void Request() { 
             System.out.println("Adapter's Request"); 
              super.SpecificRequst(); 
        } 
     
    } 
     
    public class AdapterDemo { 
     
        /** 
         * @param args 
         */ 
        public static void main(String[] args) { 
            // TODO Auto-generated method stub 
            Target t=new Adapter(); 
            t.Request(); 
        } 
     
    } 

    对象适配器模式

    package com.visionsky.DesignPattern; 
     
    interface Target { 
        void Request(); 
    } 
     
    class Adaptee { 
        void SpecificRequst() { 
            System.out.println("Adaptee's SpecificRequst"); 
        } 
    } 
     
    class Adapter  implements Target  
    { 
     
        private Adaptee adaptee; 
        public Adapter() 
        { 
            this.adaptee=new Adaptee(); 
        } 
         
        @Override 
        public void Request() { 
             System.out.println("Adapter's Request"); 
             adaptee.SpecificRequst(); 
        } 
     
    } 
     
    public class AdapterDemo { 
     
        /** 
         * @param args 
         */ 
        public static void main(String[] args) { 
            // TODO Auto-generated method stub 
            Target t=new Adapter(); 
            t.Request(); 
        } 
     
    } 
  • 相关阅读:
    [Angular2 Form] Build Select Dropdowns for Angular 2 Forms
    [Angular2 Form] Create Radio Buttons for Angular 2 Forms
    [Angular2 Router] Exiting an Angular 2 Route
    [Angular2 Router] Optional Route Query Parameters
    JS 实现地区,省份,城市,县区4级联动
    Linux web工程部署远程必备软件安装
    [置顶] 白话01背包
    APUE读书笔记-第17章-高级进程间通信
    UVA 10779 Collectors Problem(最大流)
    (二) win8+XAML Binding(数据绑定)
  • 原文地址:https://www.cnblogs.com/justkong/p/6229185.html
Copyright © 2020-2023  润新知