其他分享
首页 > 其他分享> > 5桥梁模式

5桥梁模式

作者:互联网

桥梁模式

桥梁模式(Bridge Pattern)也称为桥接模式,是一种简单、不常用的设计模式。

1桥梁模式的定义

桥梁模式的英文原话是:Decouple an abstraction from implementation so that the two can vary independently.意思是:将抽象和实现解耦,是两者可以独立的变化。桥梁模式有4个角色:
桥梁模式类图创建实现化角色的接口Implementor.java
package com.eric.结构型模式.桥梁模式.引例;

/**
 * @author Eric
 * @ProjectName my_design_23
 * @description 实现化角色
 * @CreateTime 2020-12-01 14:01:45
 */
public interface Implementor {
    //方法的实现化声明
    public void operationImp();
}
创建具体实现化角色,并实现Implementor接口
ConcreteImplementor.java
package com.eric.结构型模式.桥梁模式.引例;

/**
 * @author Eric
 * @ProjectName my_design_23
 * @description 具体实现化角色
 * @CreateTime 2020-12-01 14:04:28
 */
public class ConcreteImplementor implements Implementor {
    //方法的具体实现
    @Override
    public void operationImp() {
        System.out.println("处理业务中...");
    }
}
创建抽象化角色
Abstraction.java
package com.eric.结构型模式.桥梁模式.引例;

/**
 * @author Eric
 * @ProjectName my_design_23
 * @description 抽象化角色
 * @CreateTime 2020-12-01 14:06:48
 */
public abstract class Abstraction {
    //定义对现实化角色的引用
    private Implementor implementor;

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

    //业务方法
    public void operation(){
        this.implementor.operationImp();
    }
}
创建修正化角色RefinedAbstraction.java
package com.eric.结构型模式.桥梁模式.引例;

/**
 * @author Eric
 * @ProjectName my_design_23
 * @description 修正抽象化
 * @CreateTime 2020-12-01 14:09:53
 */
public class RefinedAbstraction extends Abstraction {
    public RefinedAbstraction(Implementor implementor) {
        super(implementor);
    }
    //修正父类的方法

    @Override
    public void operation() {
        //修正抽象化的方法
        super.operation();
    }
}
测试类Client.java
package com.eric.结构型模式.桥梁模式.引例;

/**
 * @author Eric
 * @ProjectName my_design_23
 * @description 测试类
 * @CreateTime 2020-12-01 14:10:58
 */
public class Client {
    public static void main(String[] args) {
        //定义一个实现化角色
        ConcreteImplementor implementor = new ConcreteImplementor();
        //定义一个抽象化角色
        RefinedAbstraction refinedAbstraction = new RefinedAbstraction(implementor);
        //执行
        refinedAbstraction.operation();
    }
}
测试结果

2桥梁模式的应用

a.桥梁模式的优缺点桥梁模式作为一个使用率不高的模式,但是熟悉该模式对于理解面向对象的设计原则,包括开闭原则都很有帮助,有助于形成正确的设计思想和培养良好的设计风格。桥梁模式的优点有以下几方面b.桥梁模式的使用场合c.便于理解的例子

3桥梁模式实例


画画的类图创建颜色接口和图形抽象类Color.java
package com.eric.结构型模式.桥梁模式.例1.color;

/**
 * @author Eric
 * @ProjectName my_design_23
 * @description 抽象颜色接口
 * @CreateTime 2020-12-02 15:16:40
 */
public interface Color {
    //获取颜色
    String getColor();
}

AbstractShape.java
package com.eric.结构型模式.桥梁模式.例1.shape;

import com.eric.结构型模式.桥梁模式.例1.color.Color;

/**
 * @author Eric
 * @ProjectName my_design_23
 * @description 抽象图形接口
 * @CreateTime 2020-12-02 15:15:45
 */
public abstract class AbstractShape {
    Color color;
    public AbstractShape(Color color){
        this.color = color;
    }
    public abstract void draw();
}

创建颜色的实现类Green.java
package com.eric.结构型模式.桥梁模式.例1.color;

/**
 * @author Eric
 * @ProjectName my_design_23
 * @description 绿色
 * @CreateTime 2020-12-02 16:19:35
 */
public class Green implements Color {
    @Override
    public String getColor() {
        return "绿色";
    }
}
Red.java
package com.eric.结构型模式.桥梁模式.例1.color;

/**
 * @author Eric
 * @ProjectName my_design_23
 * @description 红色
 * @CreateTime 2020-12-02 16:18:51
 */
public class Red implements Color{
    @Override
    public String getColor() {
        return "红色";
    }
}
创建图像的抽象类Circle.java
package com.eric.结构型模式.桥梁模式.例1.shape;

import com.eric.结构型模式.桥梁模式.例1.color.Color;

/**
 * @author Eric
 * @ProjectName my_design_23
 * @description 圈圈
 * @CreateTime 2020-12-02 15:57:16
 */
public class circle extends AbstractShape {
    public circle(Color color) {
        super(color);
    }

    @Override
    public void draw() {
        System.out.println("使用"+color.getColor()+"画圈圈...");
    }
}
Square.java
package com.eric.结构型模式.桥梁模式.例1.shape;

import com.eric.结构型模式.桥梁模式.例1.color.Color;

/**
 * @author Eric
 * @ProjectName my_design_23
 * @description 框框
 * @CreateTime 2020-12-02 16:01:23
 */
public class Square  extends AbstractShape {

    public Square(Color color) {
        super(color);
    }

    @Override
    public void draw() {
        System.out.println("使用"+color.getColor()+"画框框...");
    }
}
创建测试类Test.java
package com.eric.结构型模式.桥梁模式.例1;

import com.eric.结构型模式.桥梁模式.例1.color.Color;
import com.eric.结构型模式.桥梁模式.例1.color.Green;
import com.eric.结构型模式.桥梁模式.例1.shape.AbstractShape;
import com.eric.结构型模式.桥梁模式.例1.shape.Square;

/**
 * @author Eric
 * @ProjectName my_design_23
 * @description 测试类
 * @CreateTime 2020-12-02 17:35:08
 */
public class Test {
    public static void main(String[] args) {
        Color color = new Green();
        AbstractShape shape = new Square(color);
        shape.draw();
    }
}
测试结果

















来自为知笔记(Wiz)

标签:color,桥梁,模式,eric,com,public
来源: https://www.cnblogs.com/zyl-0110/p/14204678.html