美文网首页
桥梁模式

桥梁模式

作者: 内卷程序员 | 来源:发表于2022-10-02 00:09 被阅读0次
  • 将抽象和实现解耦,让它们可以独立变化。中间红色监听代表桥梁
image.png
桥梁模式4个角色:
  • 抽象化(Abstraction)角色:该角色抽象化的给出定义,并保存一个对实现化对象的引用;
  • 实现化(Implementor)角色:该角色给出实现化角色的接口,但不给出具体的实现;
  • 具体实现化(ConcreteImplementor)角色:该角色对实现化角色接口中的方法进行具体实现;
  • 修正抽象化(RefinedAbstraction)角色:该角色扩展抽象化角色,它引用实现化角色并对抽象化角色进行修正;

//抽象化

/**
 * 抽象化角色
 */
public abstract class Abstraction {

    private Implementor imp;

    public Abstraction(Implementor imp){
        this.imp = imp;
    }

    public void operation(){
        this.imp.operationImp();
    }
}
 

/**
 * 修正抽象化
 */
public class RefinedAbstraction extends Abstraction{

    public RefinedAbstraction(Implementor imp){
        super(imp);
    }
    // 修正父类的方法
    @Override
    public void operation(){
        System.out.println("修正父类的方法-->业务代码");
    }
}

实现化

/**
 * 实现化角色
 */
public interface Implementor {
    // 方法的实现化声明
    void operationImp();
}


/**
 * 具体实现化角色
 */
public class ConcreteImplementor implements Implementor{
    // 方法的实现化实现
    @Override
    public void operationImp() {
        // 业务处理代码
        System.out.println("业务处理代码");
    }
}

应用示例

/**
 * 应用代码
 */
public class Client {

    public static void main(String[] args){
        // 定义一个实现化角色
        Implementor imp = new ConcreteImplementor();
        // 定义一个抽象化角色
        Abstraction ab = new RefinedAbstraction(imp);
        // 执行
        ab.operation();
    }
}
 
颜色和形状示例(中间箭头代表桥)
image.png

实现

/**
 * 颜色接口
 */
public interface Color {
    String getColor();
}

/**
 * 红色
 */
public class Red implements Color{
    @Override
    public String getColor() {
        return "红色";
    }
}

/**
 * 绿色
 */
public class Green implements Color{
    @Override
    public String getColor() {
        return "绿色";
    }
}

抽象

/**
 * 图形抽象类
 */
public abstract class AbstractShape {
    Color color;
    public AbstractShape(Color color){
        this.color = color;
    }
    public abstract void draw();
}



/**
 * 圆形
 */
public class Circle extends AbstractShape{
    public Circle(Color color){
        super(color);
    }
    @Override
    public void draw() {
        System.out.println("使用" + color.getColor() + "画圆形");
    }
}


/**
 * 正方形
 */
public class Square extends AbstractShape{
    public Square(Color color){
        super(color);
    }
    @Override
    public void draw() {
        System.out.println("使用" + color.getColor() + "画正方形");
    }
}

应用示例

/**
 * 应用代码
 */
public class ClientDemo {

    public static void main(String[] args){
        Color green = new Green();
        AbstractShape circle = new Circle(green);
        circle.draw();

        Color red = new Red();
        AbstractShape square = new Square(red);
        square.draw();
    }
}

参考:https://www.jianshu.com/p/70866d87f784
https://www.jianshu.com/p/94399f2a28f3

相关文章

  • 第4章 结构型模式-桥梁模式

    一、桥梁模式的简介 二、桥梁模式的应用 三、桥梁模式的实例

  • 桥梁模式

    一、桥梁模式介绍 二、桥梁模式代码实例

  • 3.桥梁模式 桥梁模式:桥梁模式是一个非常重要的模式,也是一个比较复杂的模式。熟悉这个模式对于理解面向对象的设计原...

  • 桥梁模式

    桥梁模式的定义 桥梁模式也叫做桥接模式定义:将抽象和实现解耦,使得两者可以独立地变化。桥梁模式的重点是在“解耦”上...

  • 桥梁模式

    Abstraction 抽象化角色 Implementor 实现化角色 RefinedAbstraction 修正...

  • 桥梁模式

    实现化角色抽象类或接口 实现化角色抽象类或接口实现类 抽象化角色抽象类 具体抽象化角色 场景使用

  • 桥梁模式

    假设现需要提供3种型号的画笔能画出(三角形,正方形,星形),能够绘制3种不同颜色,如果使用蜡笔,我们需要准备3*3...

  • 桥梁模式

    今天我要说说我自己,梦想中的我自己,我身价过亿,有两个大公司,一个是房地产公司,一个是服装制造业,这两个公司都很赚...

  • 桥梁模式

    桥梁模式的定义 桥梁模式(Bridge Pattern)也叫做桥接模式,是一个比较简单的模式,其定义如下: Dec...

  • 桥梁模式

    将抽象和实现解耦,让它们可以独立变化。中间红色监听代表桥梁 桥梁模式4个角色: 抽象化(Abstraction)角...

网友评论

      本文标题:桥梁模式

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