zoukankan      html  css  js  c++  java
  • 【大话设计模式】——适配器模式

    定义:

        将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原来由于接口不兼容而不能一起工作的类可以一起工作。

    类型:

        结构型模式

    分类:类适配器模式和对象适配器模式

           类适配器模式通过多重继承对接口进行匹配,而C#、VB.NET、JAVA等语言不支持多重继承,一个类只允许有一个父类。所以我们主要介绍的是对象适配器模式。

    类图:

                     

    代码:

    //Target类
        class Target
        {
            public virtual void Request()
            {
                Console.WriteLine("普通请求!");
            }
        } 
        //Adaptee类
        class Adaptee
        {
            public void SpecificRequest()
            {
                Console.WriteLine("特殊请求!");
            }
        }
        //Adapter类
        class Adapter : Target
        {
            private Adaptee adaptee = new Adaptee(); //建立一个私有的Adaptee对象
            public override void Request()
            {
                adaptee.SpecificRequest();
            }
        }
    //客户端代码
                Target target = new Adapter(); //实例化对象
                target.Request();
                Console.Read();

    优点和适用范围:

            两个类所做的事情相同或相似,希望复用这些现存的类,但是具有不同的接口与复用环境要求不一致,并且双方都不太容易修改的时候,此时应该考虑使用适配器模式。

           适配器模式可以使客户代码统一调用同一接口,更加简单、直接和紧凑。

    注意事项:

             适配器模式是在软件开发后期或维护期再考虑使用的模式。

             1、在软件设计阶段,事先预防接口不同的问题,就不会发生不匹配问题;

             2、如果有接口不统一问题发生时,首先应该考虑及时重构统一接口;

             3、只有碰到无法改变原有设计和代码的情况时,才考虑适配。

  • 相关阅读:
    什么是Code Review
    支撑5亿用户、1.5亿活跃用户的Twitter最新架构详解及相关实现
    shell的数组操作
    CDN(内容分发网络)技术原理
    云计算服务模型,第 3 部分: 软件即服务(PaaS)
    Mongodb
    360的开源项目
    用linux mail命令发送邮件[Linux]
    BZOJ2761:[JLOI2011]不重复数字(map)
    BZOJ1821:[JSOI2010]部落划分(并查集,二分)
  • 原文地址:https://www.cnblogs.com/ainima/p/6331056.html
Copyright © 2011-2022 走看看