美文网首页
Java设计模式笔记(1)-适配器模式

Java设计模式笔记(1)-适配器模式

作者: hbh404 | 来源:发表于2017-02-13 22:45 被阅读0次

    适配器的定义

    适配器就是一个接口转换器,它可以是一个独立的硬件接口设备,允许硬件或电子接口与其它硬件或电子接口相连,也可以是信息接口。比如:电源适配器、三角架基座转接部件、USB与串口的转接设备等。

    两种模式:

    • 类适配器模式:使用继承的适配器 接口
    • 对象适配器模式:使用委托的适配器 抽象类

    涉及角色:

    • 源角色(Adaptee):需要适配的类
    • 目标角色(Target):想要得到的接口
    • 适配器(Adapter):转换装置

    类适配器模式例子

    源角色

    public class Banner {
        private String string;
        
        public Banner(String string) {
            this.string = string;
        }
        
        public void showWithParen() {
            System.out.println("(" + string + ")");
        }
        
        public void showWithAster() {
            System.out.println("*" + string + "*");
        }
    }
    

    目标角色

    public interface Print {
        void printWeak();
        
        void printStrong();
    }
    

    适配器

    public class PrintBanner extends Banner implements Print{
        public PrintBanner(String string) {
            super(string);
        }
        
        @Override
        public void printWeak() {
            showWithParen();
        }
    
        @Override
        public void printStrong() {
            showWithAster();
        }
    }
    

    测试类

    public class Main {
        public static void main(String[] args) {
            Print p = new PrintBanner("Hello");
            p.printWeak();
            p.printStrong();
        }
    }
    

    打印输出

    (Hello)
    *Hello*
    

    对象适配器模式

    目标角色

    public abstract class Print {
        public abstract void printWeak();
        public abstract void printStrong();
    }
    

    适配器

    public class PrintBanner extends Print{
        private Banner banner;
        
        public PrintBanner(String string) {
            banner = new Banner(string);
        }
        
        
        @Override
        public void printWeak() {
            banner.showWithAster();
        }
    
        @Override
        public void printStrong() {
            banner.showWithParen();
        }
    }
    

    适配器的优点

    系统需要使用现有的类,而此类的接口不符合系统的需要。那么通过适配器模式就可以让这些功能得到更好的复用。在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。

    适配器的缺点

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

    使用场景

    • 旧版本适配新版本,旧版本经过测试已经稳定运行很久。在更新版本时,想要抛弃旧版本,又要兼容旧版本,就可以使用适配器模式来适配旧版本对象
    • 功能不同的类使用适配器进行转换,使得类可以使用。
    • 让现有的类适配新的接口

    相关文章

      网友评论

          本文标题:Java设计模式笔记(1)-适配器模式

          本文链接:https://www.haomeiwen.com/subject/nigtwttx.html