• Bridge 桥梁模式


     

     

     

     注:桥梁模式是结构型设计模式,将抽象部分与它的实现部分相分离,使他们可以独立的变化。 

     

    抽象部分可能有n种实现,而实现部分可能有n种实现方式,采用享元模式,减少子类数据。

     

    曾经看过一个桥梁模式相关的例子,觉得挺好的。一个客户端需要调用一个作画程序。对画笔要求为,三种笔芯大小:小、中、大;三种颜色:红、黑、黄。

     

    下面用java代码实现如下

    1,颜色接口

     

    package com.pattern.structure.bridge;
    
     
    
    public interface Color {
    
     
    
    public void use() ;
    
    }

     

     

    2,三种颜色实现

     

    package com.pattern.structure.bridge;
    
     
    
    public class Red implements Color {
    
     
    
    @Override
    
    public void use() {
    
     
    
    System.out.println("use red...");
    
    }
    
     
    
    }

     

     

    package com.pattern.structure.bridge;
    
     
    
    public class Black implements Color {
    
     
    
    @Override
    
    public void use() {
    
     
    
    System.out.println("use black...");
    
    }
    
     
    
    }

     

     

     

    package com.pattern.structure.bridge;
    
     
    
    public class Yellow implements Color {
    
     
    
    @Override
    
    public void use() {
    
     
    
    System.out.println("use yellow...");
    
    }
    
     
    
    }

     

     

     

    3,三种大小笔触画法

     

    package com.pattern.structure.bridge;
    
     
    
    public abstract class Pen {
    
     
    
    protected Color color ;
    
     
    
    public Pen(Color color) {
    
     
    
    this.color = color ;
    
    }
    
     
    
    public abstract void draw() ;
    
    }

     

    package com.pattern.structure.bridge;
    
     
    
    public class SmallPen extends Pen {
    
     
    
    public SmallPen(Color color) {
    
    super(color);
    
    }
    
     
    
    @Override
    
    public void draw() {
    
     
    
    color.use(); 
    
    System.out.println("use small pen...");
    
     
    
    }
    
     
    
    }

     

    package com.pattern.structure.bridge;
    
     
    
    public class MiddlePen extends Pen {
    
     
    
    public MiddlePen(Color color) {
    
    super(color);
    
    }
    
     
    
    @Override
    
    public void draw() {
    
     
    
    color.use(); 
    
    System.out.println("use middle pen...");
    
     
    
    }
    
     
    
    }

     

     

    package com.pattern.structure.bridge;
    
     
    
    public class BigPen extends Pen {
    
     
    
    public BigPen(Color color) {
    
    super(color);
    
    }
    
     
    
    @Override
    
    public void draw() {
    
     
    
    color.use(); 
    
    System.out.println("use big pen...");
    
     
    
    }
    
     
    
    }

     

     

    4,客户端调用

     

    package com.pattern.structure.bridge;
    
     
    
    public class Client {
    
     
    
    public static void main(String[] args) {
    
     
    
    Color color = new Red() ;
    
    Pen pen = new BigPen(color) ;
    
    pen.draw();
    
    }
    
    }

     

     

     

    从上代码可以看出,如果不实用桥梁模式,要满足需求,得有3x3个子类,现在是颜色使用 3个子类,笔触大小画法 个子类。如果颜色种类多样,笔触大小多样,使用桥梁模式和不实用桥梁模式的子类数量相差更大。

     

    桥梁模式通用类图

     

     

     

    ------

      文章只为技术交流学习,若所写有误,请斧正,评论或消息与我,为不误导后来学习的人;若有不小心所写侵权,请告知我;若转载,请注明出处。

     

     

     

     

  • 相关阅读:
    mysql的悲观锁与乐观锁的实现
    java中int和Integer的区别
    node 爬取图片并下载 到本地
    vue-cli3.0使用及配置(部分)
    vue模块组件
    新版公共弹出层
    四面八方拖拽
    js常用功能技巧函数
    localStorage和cookie的跨域解决方案
    前端面试要点
  • 原文地址:https://www.cnblogs.com/sten/p/3352120.html
Copyright © 2020-2023  润新知