zoukankan      html  css  js  c++  java
  • 设计模式(第十式:桥梁模式)

    概念:

      桥梁模式:将抽象解藕,使得这两个能独立的变化。桥梁模式也叫桥接模式。

    实现:

      定义材质

        public interface Material {
            /**
             * 获取纸张
             * @return 纸张类型
             */
            String getSheet();
        }

      材质的两种实现

        public class A4 implements Material {
            @Override
            public String getSheet() {
                return "A4";
            }
        }
        public class A8 implements Material {
            @Override
            public String getSheet() {
                return "A8";
            }
        }

      定义抽象类型的书

        public abstract class AbstractBook {
            Material material;
    
            public AbstractBook(Material material){
                this.material = material;
            }
    
            public abstract void materialInfo();
        }

      抽象书的两种实现

        public class NovelBook extends AbstractBook {
            public NovelBook(Material material) {
                super(material);
            }
    
            @Override
            public void materialInfo() {
                System.out.println("小说都用"+material.getSheet()+"来制作。");
            }
        }
        public class ToolBook extends AbstractBook {
            public ToolBook(Material material) {
                super(material);
            }
    
            @Override
            public void materialInfo() {
                System.out.println("工具书都是"+material.getSheet()+"制作的");
            }
        }

    测试与结果

      测试

        @Test
        public void bridgeTest(){
            Material material = new A4();
            AbstractBook novelBook =new NovelBook(material);
            novelBook.materialInfo();
    
            AbstractBook toolBook =new ToolBook(material);
            toolBook.materialInfo();
    
            material = new A8();
            toolBook  = new ToolBook(material);
            toolBook.materialInfo();
    
        }

      结果
        小说都用A4来制作。
        工具书都是A4制作的
        工具书都是A8制作的

    分析:

      1.看着代码应该就很好理解,有没有一种感觉,抽象类是此岸,接口是彼岸。其实这个模式本来不常用到,有一种感觉就是给芭比娃娃换衣服,这就能有很多种搭配。但正常的逻辑一般都不需要反复来回搭配,都是一种固有的模式了。但有些还特定的场景还是能用到的。

      2.可以看得出来,桥接模式有很强的可扩展性。

      3.适用场景:
        a.如果继承层级过多,可以使用这种模式打破继续继承的模式。
        ...

       (这个平时不常用,所以就...)

  • 相关阅读:
    springboot整合swagger2
    关于lombok
    RSA加密和AES加密
    守护进程监控tomcat并自启
    java按照目录结构压缩文件夹以及文件夹内内容
    wxx
    附加作业
    软工作业3
    软工作业2
    软工作业一 201621123070陈伟杰
  • 原文地址:https://www.cnblogs.com/ben-mario/p/10782639.html
Copyright © 2011-2022 走看看