zoukankan      html  css  js  c++  java
  • C#设计模式(7)——适配器模式

    一、概述

    将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。

    二、模型

    三、代码实现

    using System;
    
    /// 这里以插座和插头的例子来诠释适配器模式
    /// 现在我们买的电器插头是2个孔,但是我们买的插座只有3个孔的
    /// 这是我们想把电器插在插座上的话就需要一个电适配器
    namespace 设计模式之适配器模式
    {
        /// <summary>
        /// 客户端,客户想要把2个孔的插头 转变成三个孔的插头,这个转变交给适配器就好
        /// 既然适配器需要完成这个功能,所以它必须同时具体2个孔插头和三个孔插头的特征
        /// </summary>
        class Client
        {
            static void Main(string[] args)
            {
                // 现在客户端可以通过电适配要使用2个孔的插头了
                IThreeHole threehole = new PowerAdapter();
                threehole.Request();
                Console.ReadLine();
            }
        }
    
        /// <summary>
        /// 三个孔的插头,也就是适配器模式中的目标角色
        /// </summary>
        public interface IThreeHole
        {
            void Request();
        }
    
        /// <summary>
        /// 两个孔的插头,源角色——需要适配的类
        /// </summary>
        public abstract class TwoHole
        {
            public void SpecificRequest()
            {
                Console.WriteLine("我是两个孔的插头");
            }
        }
    
        /// <summary>
        /// 适配器类,接口要放在类的后面
        /// 适配器类提供了三个孔插头的行为,但其本质是调用两个孔插头的方法
        /// </summary>
        public class PowerAdapter:TwoHole,IThreeHole
        {
            /// <summary>
            /// 实现三个孔插头接口方法
            /// </summary>
            public void Request()
            {
                // 调用两个孔插头方法
                this.SpecificRequest();
            }
        }
    }
  • 相关阅读:
    fish shell version
    golang io.ReadFull
    Unity5 2D Animation
    unity3d vscode
    golang bufio.Scanner
    kafka知识点
    linux clone
    Oracle查询在哪些 存储过程/函数/触发器 等等中包含 指定字符串
    在Oracle中,使用简洁的函数(Function)实现字符串split分割效果
    在Spring中,使用ProxyFactory实现对Cglib代理对象的再次代理
  • 原文地址:https://www.cnblogs.com/zyj649261718/p/6292242.html
Copyright © 2011-2022 走看看