zoukankan      html  css  js  c++  java
  • 适配器模式

    namespace DemoSocket
    {
    /// <summary>
    /// 适配器必须实现原有的旧接口,适配器对象中持有对新接口的引用,当调用旧接口时,将这个调用委托给
    /// 实现新接口的对象来处理,也就是在适配器对象中组合一个新接口
    /// </summary>
    class SocketAdapter : IDbSocketInterface //实现旧接口
    {
    //组合新接口
    private readonly IGbSocketInterface _gbSocket;
    /// <summary>
    /// 在创建适配器对象时,必须传入一个新接口的实现类
    /// </summary>
    /// <param name="gbSocket"></param>
    public SocketAdapter(IGbSocketInterface gbSocket)
    {
    _gbSocket = gbSocket;
    }
    /// <summary>
    /// 将对旧接口的调用适配到新接口
    /// </summary>
    public void PowerWithTwoRound()
    {
    _gbSocket.PowerWithThreeFlat();
    }
    }
    }

    namespace DemoSocket
    {
    public interface IDbSocketInterface
    {
    void PowerWithTwoRound();
    }
    }

    namespace DemoSocket
    {
    public interface IGbSocketInterface
    {
    void PowerWithThreeFlat();
    }
    }


    namespace DemoSocket
    {
    public class DbSocket : IDbSocketInterface
    {
    public void PowerWithTwoRound()
    {
    Console.WriteLine("使用两项圆头的插孔供电");
    }
    }
    }

    {
    public class GbSocket :IGbSocketInterface
    {
    public void PowerWithThreeFlat()
    {
    Console.WriteLine("使用三项扁头插孔充电");
    }
    }
    }


    namespace DemoSocket
    {
    public class Hotel
    {
    private IDbSocketInterface _dbSocket;
    public Hotel(){}
    public Hotel(IDbSocketInterface dbSocket)
    {
    this._dbSocket = dbSocket;
    }
    public void SetSocket(IDbSocketInterface dbSocket)
    {
    this._dbSocket = dbSocket;
    }
    public void Charge()
    {
    _dbSocket.PowerWithTwoRound();
    }
    }
    }

    namespace DemoSocket
    {
    class Program
    {
    static void Main(string[] args)
    {
    IGbSocketInterface gbSocket = new GbSocket();
    var socketAdaper = new SocketAdapter(gbSocket);
    var hotel = new Hotel();
    hotel.SetSocket(socketAdaper);
    hotel.Charge();
    Console.ReadKey();
    }
    }
    }

  • 相关阅读:
    Jenkins安装2
    11月14 vagrant 虚拟机连接
    11月13 ssh 和 netstat
    Jenkins安装
    11月12号 springboot1.5 引入redis
    11月12号 用户登录输入密码错误达到指定次数后,锁定账户 004
    js模式-观察者模式
    立即执行函数
    vue 获取数据
    在登陆退出时候使用Vuex
  • 原文地址:https://www.cnblogs.com/gylhaut/p/5441849.html
Copyright © 2011-2022 走看看