【设计模式学习】适配器模式

此方法可用于,新增转接新的客户至已经有的服务上,就是说在已有服务和新的请求之间,加入一层适配层,将新的请求进行,拼装,然后调用原服务

需要如下类

1.Adaptee ------>被适配的对象,即原有服务

2.Target ------>适配器接口,-此接口提供执行方法

3.Adapter ------>  .适配器实现类,此接口实现Target ,同时包含一个Adaptee 的成员属性

4.Client  ------> 客户端类,此类进行调用, 可以提供多个方法,方法内部实现调用

package Adapter;

/**
 * 适配器模式
 * @author DMW
 * @2019年1月16日
 */
public class Main {
    
    public static void main(String[] args) {
        /**
         * 通过client执行
         */
        Client c =new Client();
        Target t =new Adapter();
        c.invok(t);
        
        Target t2 =new Adapter2();
        c.invok(t2);
        
        
        /**
         * 直接通过target执行
         */
        Target t3 =new Adapter3();
        t3.invoke();
    }
    
}

package Adapter;

/**
 * 适配器接口
 * @author DMW
 * @2019年1月16日
 */
public interface Target {

    void invoke();
}
 

package Adapter;

/**
 * 适配器实现类
 * @author DMW
 *
 * @2019年1月16日
 */
public class Adapter implements Target{

    /**
     * 如果有需要,可以根据原服务建立多个适配器类
     * 或者在此方法内部进行服务分配
     */
    
    
    private Adapted a =new Adapted();
    
    @Override
    public void invoke() {
        a.doSomething();
    }


}

class Adapter2 implements Target{

    private Adapted b =new Adapted();
    
    @Override
    public void invoke() {
            
        b.deleteSomeThing();
    }
    
}

class Adapter3 implements Target{

    private Adapted b =new Adapted();
    
    @Override
    public void invoke() {
            
        b.catchSomeThing();
    }
    
}
 

package Adapter;
/**
 * 被适配的对象
 * @author DMW
 *
 * @2019年1月16日
 */
public class Adapted {

    public void doSomething(){
        System.out.println("我是被适配的对象,我要doSomeThing");
    }
    
    
    public void deleteSomeThing(){
        System.out.println("我是被适配的对象,我要deleteSomeThing");
    }
    
    public void catchSomeThing(){
        System.out.println("我是被适配的对象,我要catchSomeThing");
    }
}
 

猜你喜欢

转载自blog.csdn.net/D_MingWang/article/details/86503560