• 适配器模式——设计模式


    最近温习设计模式,看了这篇文章,根据自己的理解进行了一些修改,加深一下印象。


    背景:菜鸟马上又要去德国出差了,上一次由于不知道德国插座与中国插座不同,带去的电子设备好险没充上电,差点沦为摆设,让他在心仪的小美面前出了洋相。这一次,菜鸟吸取教训,特意去超市采购了一件神器,有了神器在手,再也不担心出洋相了。


    package adapterPattern;
    
    /**
     * Created by cq on 2015/8/16.
     * 测试适配器模式
     */
    public class Shaver {
        private GlSSocketInterface glsocket;
        //插入插座
        public void setSocket(GlSSocketInterface glsocket){
            this.glsocket = glsocket;
        }
        //充电
        public void charge(){
            glsocket.powerWithGlS();
        }
        public static void main(String[] args){
            //菜鸟有一把剃须刀
            Shaver shaver = new Shaver();
    
            //菜鸟在国内给剃须刀充电
            //这里有国标插座,直接使用
            GlSSocketInterface glSSocket = new GlSSocket();
            //插入国标插座
            shaver.setSocket(glSSocket);
            //充电
            shaver.charge();
    
    
            //菜鸟出差到了国外,准备给剃须刀充电
            //这里只有德国插座(旁边小美斜睨着菜鸟)
            GeSSocket geSSocket = new GeSSocket();
            //哈哈,大笑中掏出插座适配器,插入德国插座
            glSSocket = new SocketAdapter(geSSocket);
            //剃须刀插入适配器
            shaver.setSocket(glSSocket);
            //顺利充电
            shaver.charge();
        }
    }
    
    //符合德国插座标准的德国插座
    class GeSSocket{
        public void powerWithGeS(){
            System.out.println("德国插座充电中...");
        }
    }
    
    //符合国际标准的插座
    interface GlSSocketInterface{
        void powerWithGlS();
    }
    //符合国际插座标准的插座
    class GlSSocket implements GlSSocketInterface{
        public void powerWithGlS(){
            System.out.println("国标插座充电中...");
        }
    }
    
    //插座适配器,提供给国标剃须刀无缝充电体验
    class SocketAdapter implements GlSSocketInterface{
        private GeSSocket geSSocket;
        public SocketAdapter(GeSSocket geSSocket){
            this.geSSocket = geSSocket;
        }
        //将德国插座送过来的电以国标插座的方式送出
        public void powerWithGlS(){
            System.out.println("正在使用适配器进行适配...");
            geSSocket.powerWithGeS();
        }
    }
    
  • 相关阅读:
    把文本文件数据快速导入Sql Server
    db4o, 看上去很美
    从《黑暗森林》事件谈下我对网络时代正版,盗版的看法
    viewDidUnload 和 dealloc 的区别(转)
    (翻译)cocoaasyncsocket 异步Socket
    iPhone的Socket编程使用开源代码之AsyncSocket(转)
    iphone之开源类库工具
    ObjectC 中各数据类型转换 NSData转NSString,Byte,UIImage
    iphone开发ObjectiveC新特性──类别与协议(转)
    让WebForm异步起来(转)
  • 原文地址:https://www.cnblogs.com/read-the-spring-and-autumn-annals-in-night/p/12041955.html
Copyright © 2020-2023  润新知