目录

结构型模式属于组件生命周期中的创建

适配器模式

将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,适配器模式分为类结构型模式(继承)和对象结构型模式(组合)两种,前者(继承)类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些

日本友人看电影

日本友人看电影

<aside> 💡 核心:系统原来存在的所有接口都不能动,扩展一个新的类来连接之前不同的类

</aside>

实现适配器的两种方式:

  1. 类结构模型

    package com.atguigu.design.structural.adapter.clazz;
    
    import com.atguigu.design.structural.adapter.Player;
    import com.atguigu.design.structural.adapter.Zh_JPTranslator;
    
    /**
     * 继承的方式:类结构模型,适配转换到了翻译器的功能上
     *
     *
     */
    public class JPMoviePlayerAdapter extends Zh_JPTranslator implements Player {
    
        private Player target;//被适配对象
        public JPMoviePlayerAdapter(Player target){
            this.target = target;
        }
    
        @Override
        public String play() {
    
            String play = target.play();
            //转换字幕
            String translate = translate(play);
            System.out.println("日文:" + translate);
            return play;
        }
    }
    
  2. 对象结构模型

    package com.atguigu.design.structural.adapter.obj;
    
    import com.atguigu.design.structural.adapter.Player;
    import com.atguigu.design.structural.adapter.Translator;
    import com.atguigu.design.structural.adapter.Zh_JPTranslator;
    
    /**
     * 组合的方式:对象结构模型,适配转换到了翻译器的功能上
     *
     * (继承、组合)、封装、多态
     *
     *
     *
     */
    public class JPMoviePlayerAdapter implements Player {
    
        //组合的方式
        private Translator translator = new Zh_JPTranslator();
        private Player target;//被适配对象
        public JPMoviePlayerAdapter(Player target){
            this.target = target;
        }
    
        @Override
        public String play() {
    
            String play = target.play();
            //转换字幕
            String translate = translator.translate(play);
            System.out.println("日文:"+translate);
            return play;
        }
    }
    

桥接模式

将抽象和实现解耦,使两者都可以独立变化

桥接将继承转换为关联,降低类之间的耦合度,减少代码量

系统设计期间,如果这个类里面的一些东西,会扩展很多,这个东西就应该分离出来