zoukankan      html  css  js  c++  java
  • 一天学习一个设计模式之适配器模式

      系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用希望用一些现存的类,但是接口又与复用环境不一致的情况。适配器模式讲了两种类型类适配器模式对象适配器模式。由于C#、java等语言不支持多重继承,也就是一个类只有一个父类,所以主要用的是对象适配器。

      

    ITarget(这是客户所期待的接口。目标可以是具体的类或抽象的类,也可以是接口)代码如下:

    public interface ITarget {
         void request();
    }

    Adaptee(需要适配的类)代码如下

    public class Adaptee {
        public void specificRequest(){
            System.out.println("特殊请求");
        }
    }

    Adapter(通过在内部包装一个Adaptee对象,把源接口转换成目标接口)代码如上

    public class Adapter implements ITarget {
        private Adaptee adaptee=new Adaptee();
        @Override
        public void request() {
            adaptee.specificRequest();
        }
    }

    客户端代码如下

    public class Client {
        public static void main(String[] args) {
            ITarget target=new Adapter();
            //对客户端而言就是调用的Target的Request方法
            target.request();
        }
    }

    何时使用适配器模式

      使用一个已经存在的类,但如果它的接口,也就是它的方法和你的要求不相同时,就应该考虑用适配器模式。

      两个类所做的事情相同或相似,但是具有不同的接口时要使用它。而且由于类都共享一个接口,使得客户代码如何?

      客户代码可以统一调用同一个接口,这样可以更简单、更直接、更紧凑。适配器模式属于“亡羊补牢”,适合于在代码的维护阶段,在双方都不太容易修改时再使用适配器模式进行适配。

             

  • 相关阅读:
    C#中索引器的实现过程,是否只能根据数字进行索引?
    重载与覆盖的区别?
    C#中 property 与 attribute的区别?
    C#可否对内存进行直接的操作?
    在c#中using和new这两个关键字有什么意义?
    secs/gem协议
    框架2
    C#开发框架学习
    C#两种数据类型
    泛型参数
  • 原文地址:https://www.cnblogs.com/gousheng107/p/8000203.html
Copyright © 2011-2022 走看看