美文网首页
桥接模式(Bridge)

桥接模式(Bridge)

作者: bin丶 | 来源:发表于2020-12-02 15:42 被阅读0次

    前言

    设计模式系列代码均持续更新在我的gitHub:to github


    普通实现模式类图

    • 图形(graph)有2个维度的属性,一个是形状(shape),一个是颜色(color)
    • 类图如下:


    • 此时想要增加一个三角形(triangle)就得多写四个类

    桥接模式类图

    • 此时想添加三角形(triangle)只需要写一个继承Shape类的Triangle类就行了
    • 对于 形状(shape) 和 颜色(color) 这2个不同维度的属性来说,由于 Shape类聚合了Color接口,相当于将2个属性用"桥"连接起来了

    部分代码

    public interface Color {
        void printColor();
    }
    
    public class Red implements Color {
        public void printColor() {
            System.out.print("红色的");
        }
    }
    
    public abstract class Shape {
    
        private Color color;
    
        public Shape(Color color) {
            this.color = color;
        }
    
        protected void  printColor() {
            this.color.printColor();
        }
    
        abstract void printShape();
    }
    
    public class Circle extends Shape {
        
        public Circle(Color color) {
            super(color);
        }
    
        public void printShape() {
            printColor();
            System.out.println("圆形...");
        }
    }
    

    总结

    1、优点

    • 抽象与实现分离,扩展能力强
    • 符合开闭原则
    • 符合合成复用原则
    • 其实现细节对客户透明

    2、缺点

    • 由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,能正确地识别出系统中两个独立变化的维度,这增加了系统的理解与设计难度。

    相关文章

      网友评论

          本文标题:桥接模式(Bridge)

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