zoukankan      html  css  js  c++  java
  • 适配器模式

        适配器模式(Adapter Pattern)就是对一个类做适配,使之符合客户端的需求,能够正常的工作。

        就像是变压器(Adapter),美国的生活电压是110V,中国的是220V,美国的电器要在中国使用就需要加上一个变压器(Adapter)。

        适配器模式也被称为包装模式(Wrapper Pattern),将已有的类进行包装,使之具有需求所需的接口。

        适配器模式有以下两种:类的适配器模式和对象的适配器模式。

        

        类的适配器模式的类图关系如下:

        

           Target:目标角色,包含所有期望拥有的接口

           Adaptee:现有的类,需做适配

           Adapter:适配Adaptee符合Target      

    public interface Target {   
        void sampleOperation1();
        void sampleOperation2();
    }
    

      

    public class Adaptee {
        public void sampleOperation1(){}
    }
    

      

    public class Adapter extends Adaptee implements Target {
       
        public void sampleOperation2(){
            // Write your code here
        }
    }
    

      对象的适配器模式的类图关系如下:

     

        对象的适配器模式与类的适配器模式的区别在于: Adapter与Adaptee的关系不是继承,而是关联。 Adapter直接调用Adaptee。

    public class Adapter implements Target {
        public Adapter(Adaptee adaptee){
            super();
            this.adaptee = adaptee;
        }
    
        public void sampleOperation1(){
            adaptee.sampleOperation1();
        }
    
        public void sampleOperation2(){
            // Write your code here
        }
    
        private Adaptee adaptee;
    }
    

      下面的情况下可以考虑使用适配器:

           1.系统需要使用现有的类,但是现有类的接口又不符合。

           2.需要创建一个可以重复使用的类,用于一些彼此没有太大关联的类,包括一些可能在将来引进的类。

            

          Enumeration接口较Iterator较早出现在JDK中,2者之间如果不做转换,使用起来是比较麻烦的。可能定义了一个Iterator,但方法的参数是Enumeration。

          下面就是Iterator适配到Enumeration的类图。

          

            

    public class Itermeration implements Enumeration{
    	private Iterator it;
    
        public Itermeration(Iterator it)
        {
            this.it = it;
        }
    
        public boolean hasMoreElements()
        {
            return it.hasNext();
        }
    
        public Object nextElement() throws NoSuchElementException
        {
    		return it.next();
        }
    }
    

      JDBC使得Java语言可以连接到数据库,并使用SQL操作数据。各具体的数据库要适配JDBC使其能够适用于具体的数据库连接。

          使用适配器模式时有一些需要注意的事:

          1.目标接口可以省略,源是一个接口,适配器需要实现源中的方法,可以不必实现不需要的方法,见缺省适配模式。

          2.适配器可以是抽象类,见缺省适配模式。

          3.带参数的适配器模式,适配器可以根据参数返回一个合适的类给客户端。

  • 相关阅读:
    Salesforce和SAP Netweaver里数据库表的元数据设计
    Salesforce平台支持多租户Multi tenant的核心设计思路
    S/4HANA生产订单增强WORKORDER_UPDATE方法BEFORE_UPDATE参数分析
    S/4HANA生产订单的标准状态和透明工厂原型状态的映射
    1048. Find Coins (25)
    1101. Quick Sort (25)
    1009. Product of Polynomials (25)
    pta 奇数值结点链表&&单链表结点删除
    1007. Maximum Subsequence Sum (25)
    1006. Sign In and Sign Out (25)
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/3839826.html
Copyright © 2011-2022 走看看