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();
    }
    }
    }

  • 相关阅读:
    今天你们表现的真棒!!!
    多久没有给家里打过电话了?
    算法>并行算法 小强斋
    设计模式>单一职责原则 小强斋
    设计模式>里氏替换原则 小强斋
    设计模式>依赖倒置原则 小强斋
    设计模式>里氏替换原则 小强斋
    设计模式>接口隔离原则 小强斋
    设计模式>接口隔离原则 小强斋
    设计模式>单一职责原则 小强斋
  • 原文地址:https://www.cnblogs.com/gylhaut/p/5441849.html
Copyright © 2011-2022 走看看