Eddyer
发下工资正心凉,一紧张,码全忘。似曾相识,何用却不详。设计模式两茫茫,看代码,泪千行。步出小窝见同事,都一样,很受伤。如此工资,无颜见嫩娘。只待晚上交钱日,接绳套,系房梁。

1、适配器模式就是将一个类的接口变成客户端所期待的另一种接口,使客户端能够使用原来因为接口不匹配所导致不能用的接口。

        好像变压器,像我们的手机电脑,不能直接使用220V的电压,那么通过变压器就能降低电压,使原        来不能使用的电压现在变得能够使用。这个变压器就是一个适配。

       下图中,原本A和C是不能够在一起,通过B的适配,AC终成眷属了。。。。

 2、下面看看适配器模式的代码:

需要适配的角色,就像上面图中的A。。

package com.wang.adapterPattern;

/**
 * 适配器模式 </br> 目标角色
 * 
 * @author Eddy
 * 
 */
public interface Target {

    /**
     * 目标角色自己的方法
     */
    public void request();
}

 它的实现类

    package com.wang.adapterPattern;  
      
    /** 
     * 目标角色实现类 
     *  
     * @author Eddy
     *  
     */  
    public class ConcreteTarget implements Target {  
      
        @Override  
        public void request() {  
      
            System.out.println("ConcreteTarget");  
        }  
      
    }  

 适配的原角色,就像上图中的C。。

package com.wang.adapterPattern;

/**
 * 适配的源角色
 * 
 * @author Eddy
 * 
 */
public class Adaptee {

    /**
     * 源角色的方法
     */
    public void doSomething() {
        System.out.println("Adaptee");
    }
}

适配器角色,也就是上图中的B了,这个类继承了不符合接口的这个类,可以使用这个类的所有方法,同时也现实了符合条件的接口。

    package com.wang.adapterPattern;  
      
    /** 
     * 适配器角色 
     *  
     * @author Eddy
     *  
     */  
    public class Adapter extends Adaptee implements Target {  
      
        @Override  
        public void request() {  
            super.doSomething();  
        }  
    }  

客户端使用情况:

package com.wang.adapterPattern;

public class APP {

    public static void main(String[] args) {

        Target target = new ConcreteTarget();
        target.request();

        /**
         * 适配其他的角色
         */
        Target targetAdapter = new Adapter();
        targetAdapter.request();
    }
}

总结:需要用一个类中的方法来做操作,但是这个类又不符合系统的接口。可以用继承是实现来调用。

 

posted on 2015-10-12 17:06  Eddyer  阅读(95)  评论(0)    收藏  举报