适配器模式

适配者模式介绍

在不动源码情况下,将一个类的接口转换成客户希望的另外一个接口。 

类图

 

适配器模式_第1张图片

Adapter 适配器设计模式中有 3 个重要角色:被适配者 Adaptee,适配器 Adapter 和目标对象 Target。

其中两个现存的想要组合到一起的类分别是被适配者 Adaptee 和目标对象 Target 角色,

按照类图所示,最终我们需要创建一个适配器 Adapter 将其(Adaptee和Target)组合在一起。

代码实现

原有功能:获取用户名称
新的需求:不仅要获取用户名称还要获取用户地址(原则:不动源码的情况下进行功能扩展)

Adaptee - 被适配者(已有的功能)
Target - 目标类接口(新功能)
Adapter - 适配器(整合已有功能和新功能)
/**
 * 获取用户名称(原有的功能方法) - 被适配者
 */
public class Adaptee {

    public String getName(){
        return "zhangshan";
    }
}
/**
 * 获取用户地址和名称(需要新增加的功能) - 目标对象
 */
public interface Target {

    public String getAddr();
}

 

/**
 * - 适配器
 */
public class Adapter implements Target {

    /** 被适配者 */
    public Adaptee adaptee;

    /** 通过有参构造传入-被适配者对象 */
    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public String getAddr() {
        // 用户名称
        String addName = adaptee.getName();

        // 用户地址
        String addAddr = "beijing";
        return addName + ", " + addAddr;
    }

}
// 测试执行    
public static void main(String[] args) {
        // 原有功能
        Adaptee adaptee = new Adaptee();
        System.out.println("原有功能:"+adaptee.getName());

        // 适配器新功能
        Adapter adapter = new Adapter(adaptee);
        System.out.println("适配新需求后的功能:"+adapter.getAddr());
}

 

你可能感兴趣的:(设计模式)