• 设计模式——桥接模式


    了解一下桥接模式的定义:

    桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。

    桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。

    抽象部分与实现部分的分离并不是说抽行类和它的派生类分开,而是抽象类和派生类用来生成它们的对象

    例如我们画图,形状并没有特意的规定,可以根据我们的想象随意画出,这是一个多变量,

    接下来为形状上色,颜色也可以根据我们的爱好随意调和出,也是一个多变量。

    再画出形状之后要求必须要上色,两者之间是相互依存的。

    在存在两个多变量的情况下如何更更优化的写出代码,这时便要用到桥接模式。

    形状类

    1 public abstract class Shape {
    2     Color color;
    3 
    4     public void setColor(Color color) {
    5         this.color = color;
    6     }
    7     
    8     public abstract void draw();
    9 }

    颜色属性是画图过程中的必须属性。

    形状类职能确定画出的形状,而上色部分部分则是由颜色类进行操作。

    实现一个正方形的形状类

    1 public class Square extends Shape{
    2 
    3     public void draw() {
    4         color.bepaint("正方形");
    5     }
    6 
    7 }

    接下来实现颜色类

    颜色类

    1 public interface Color {
    2     public void bepaint(String shape);
    3 }

    实现白色颜色类

    1 public class White implements Color{
    2 
    3     public void bepaint(String shape) {
    4         System.out.println("白色的" + shape);
    5     }
    6 
    7 }

    颜色类只能提供颜色,对于形状无能为力。

    但是要想画图,必须要有形状类的参与。

    我们实现一下画图的功能

     1         //白色
     2         Color white = new White();
     3         //正方形
     4         Shape square = new Square();
     5         //白色的正方形
     6         square.setColor(white);
     7         square.draw();

    如果只对于图形接口进行继承,在继承下的形状之下再次添加颜色状态,那样代码相当繁琐。

    在这种情况下,这两个对象进行变化之后,维护的成本就会相当的低。

    1、桥接模式实现了抽象化与实现化的脱耦。他们两个互相独立,不会影响到对方。

    2、对于两个独立变化的维度,使用桥接模式再适合不过了。

    3、对于“具体的抽象类”所做的改变,是不会影响到客户

    学习于  https://www.cnblogs.com/chenssy/p/3317866.html

  • 相关阅读:
    git 常用命令
    重要知识点
    HTML 标记语言
    js类型转换
    伪数组变数组 js
    在 JavaScript 中为什么 typeof null 的结果是 object?
    HTML中href、src区别
    解决for循环插入同一元素无法重复插入问题
    HTML5-语义化
    mount 和 /etc/fstab关系。
  • 原文地址:https://www.cnblogs.com/cwmizlp/p/9045366.html
Copyright © 2020-2023  润新知