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

    适配器模式
    将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
    Adapter 模式的宗旨:保留现有类所提供的服务,向客户提供接口,以满足客户的期望。

    首先应该明白一点,适配器是最后的补救措施,应该在功能设计的时候尽量避免。所以请在设计功能的时候忘掉这个模式。

    类结构图
    在这里插入图片描述
    Target
    用户期待的目标接口。
    Adapter
    适配器,通过在内部包装一个 Adaptee 对象,把源接口转换成目标接口。
    Adaptee
    需要适配的类或接口。

    代码示例

    /**
     * 提供给客户的目标接口
     */
    public interface Target {
        void newMethod();
    }
    
    /**
     * 适配器
     */
    public class Adapter implements Target {
        private Adaptee adaptee = new ConcreteAdaptee();
        @Override
        public void newMethod() {
            adaptee.oldMethod();
        }
    }
    
    /**
     * 项目原先的老接口不需要改动
     */
    public interface Adaptee {
        void oldMethod();
    }
    
    /**
     * 老接口的具体实现
     */
    public class ConcreteAdaptee implements Adaptee {
        @Override
        public void oldMethod() {
            System.out.println("老接口功能 method!");
        }
    }
    

    客户端示例

    public class Client {
        public static void main(String[] args) {
            Target target = new Adapter();
            target.newMethod();
        }
    }
    

    运行结果

    老接口功能 method!
    
    Process finished with exit code 0
    

    使用场景
    只要记住一点。当你有动机修改一个已经投入生产的接口,这时候就可以考虑试用适配器模式。适配器模式是用于解决接口不兼容问题有效方法。

    优点

    1. 可以让任何两个没有关联的类一起运行。
    2. 提高了类的复用。
    3. 增加了类的透明度。
    4. 灵活性好。

    缺点
    过多地使用适配器,会让系统非常零乱,不易整体进行把握。

    注意事项:适配器不是在详细设计时添加的,而是解决正在服役的项目的问题。

    勿在浮沙筑高台 ——个人浅见,难免有误导之处,麻烦请指出。
  • 相关阅读:
    overlapped
    overlapped编程
    Oracle DB 使用子查询来解决查询
    OCP-1Z0-051-V9.02-132题
    OCP-1Z0-051-V9.02-131题
    OCP-1Z0-051-V9.02-130题
    OCP-1Z0-051-V9.02-129题
    OCP-1Z0-051-V9.02-128题
    OCP-1Z0-051-V9.02-127题
    OCP-1Z0-051-V9.02-126题
  • 原文地址:https://www.cnblogs.com/liufeichn/p/11961643.html
Copyright © 2011-2022 走看看