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

    一、概述
            将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
    二、适用性
    1.你想使用一个已经存在的类,但是它的接口不符合你的要求的时候。
    2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口肯不一定兼容的类)协同工作的时候。
    3.你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口的时候。对象适配器可以适配它的父类接口。
    三、参与者
    1.Target:定义Client使用的与特定领域相关的接口。
    2.Adaptee:定义一个已经存在的接口,该接口需要适配。
    3.Adapter:对Adaptee接口与Target接口进行适配。
    4.Client:与符合Target接口的对象协同。
    四、类图

    五、示例
    Target
    package cn.lynn.adapter;
    
    public interface ICharger {
    
        public void chargeIPhone();
        
        public void chargeAndroid();
    
    }
    Adaptee
    package cn.lynn.adapter;
    
    public class IPhone {
    
        public void chargeIPhone() {
            System.out.println("支持IPhone手机充电!");
        }
    
    }
    
    Adapter
    package cn.lynn.adapter;
    
    public class Android implements ICharger {
    
        private IPhone iPhone;
    
        public Android(IPhone iPhone) {
            this.iPhone = iPhone;
        }
    
        @Override
        public void chargeIPhone() {
            iPhone.chargeIPhone();
        }
    
        @Override
        public void chargeAndroid() {
            System.out.println("支持Android手机充电!");
        }
    
    }
    
    Client
    package cn.lynn.adapter;
    
    public class Client {
    
        public static void main(String[] args) {
            ICharger charger = new Android(new IPhone());
            charger.chargeIPhone();
            charger.chargeAndroid();
        }
    
    }
    
    Result
    支持IPhone手机充电!
    支持Android手机充电!
  • 相关阅读:
    思路决定出路
    php-异常处理机制
    Win10 IoT 10 中文显示乱码或报错的问题
    Win10 IoT 9 Windows IoT Core扩展开发包
    Win10 IoT 8 GPIO输入输出
    Win10 IoT 7 10586版本的异同
    Win10 IoT 6 设置系统时间
    Win10 IoT 5 修改IP地址
    Win10 IoT 4 远程启动计划任务
    Win10 IoT 3 部署应用
  • 原文地址:https://www.cnblogs.com/innosight/p/3271153.html
Copyright © 2011-2022 走看看