• GoF23种设计模式之结构型模式之适配器模式


    一、概述
            将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
    二、适用性
    1.你想使用一个已经存在的类,但是它的接口不符合你的要求的时候。
    2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口肯不一定兼容的类)协同工作的时候。
    3.你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口的时候。对象适配器可以适配它的父类接口。
    三、参与者
    1.Target:定义Client使用的与特定领域相关的接口。
    2.Adaptee:定义一个已经存在的接口,该接口需要适配。
    3.Adapter:对Adaptee接口与Target接口进行适配。
    4.Client:与符合Target接口的对象协同。
    四、类图
    五、示例
    Target
    [java] view plain copy
     
     print?
    1. package cn.lynn.adapter;  
    2.   
    3. public interface ICharger {  
    4.   
    5.     public void chargeIPhone();  
    6.       
    7.     public void chargeAndroid();  
    8.   
    9. }  
    Adaptee
    [java] view plain copy
     
     print?
    1. package cn.lynn.adapter;  
    2.   
    3. public class IPhone {  
    4.   
    5.     public void chargeIPhone() {  
    6.         System.out.println("支持IPhone手机充电!");  
    7.     }  
    8.   
    9. }  
    Adapter
    [java] view plain copy
     
     print?
    1. package cn.lynn.adapter;  
    2.   
    3. public class Android implements ICharger {  
    4.   
    5.     private IPhone iPhone;  
    6.   
    7.     public Android(IPhone iPhone) {  
    8.         this.iPhone = iPhone;  
    9.     }  
    10.   
    11.     @Override  
    12.     public void chargeIPhone() {  
    13.         iPhone.chargeIPhone();  
    14.     }  
    15.   
    16.     @Override  
    17.     public void chargeAndroid() {  
    18.         System.out.println("支持Android手机充电!");  
    19.     }  
    20.   
    21. }  
    Client
    [java] view plain copy
     
     print?
    1. package cn.lynn.adapter;  
    2.   
    3. public class Client {  
    4.   
    5.     public static void main(String[] args) {  
    6.         ICharger charger = new Android(new IPhone());  
    7.         charger.chargeIPhone();  
    8.         charger.chargeAndroid();  
    9.     }  
    10.   
    11. }  
    Result
    [java] view plain copy
     
     print?
    1. 支持IPhone手机充电!  
    2. 支持Android手机充电!  
     
     
  • 相关阅读:
    Win32串口API
    Windows核心编程 第4章 进程
    大家都来吐槽下12306的网站bug吧
    HttpRequest模拟Post和Get提交代码
    jquery.masonry + jquery.infinitescroll 实现瀑布流布局
    三层架构之泛型应用
    listView 中,大图标时,各个图标之间间距的控制
    Windows Phone APP的设计过程
    分享三个小故事
    最值得创业者聆听的10大TED演讲(中文字幕视频)
  • 原文地址:https://www.cnblogs.com/huangwentian/p/7471542.html
Copyright © 2020-2023  润新知