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();
            }
        }
    }
  • 相关阅读:
    CodeForces-786B Legacy (线段树优化建图,单源最短路)
    CodeForces-528C Data Center Drama
    CodeForces-723E One-Way Reform
    2-SAT入门
    POJ-3683 Priest John's Busiest Day (2-SAT 求任意可行方案)
    转载: 8天学通MongoDB——第一天 基础入门
    C# 非EF注册登录与EF注册登录
    Asp.Net入门(三)
    非EF分页
    sql语句错误大集合
  • 原文地址:https://www.cnblogs.com/zyj649261718/p/6292242.html
Copyright © 2011-2022 走看看