美文网首页
第4章 结构型模式-桥梁模式

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

作者: 一介书生独醉江湖 | 来源:发表于2022-06-20 11:23 被阅读0次
    结构型模式的目的是通过组合类或对象产生更大结构,以适应更高层次的逻辑需求;
    
    结构型模式共有7种:
    ■ 代理模式
    ■ 装饰模式
    ■ 适配器模式
    ■ 组合模式
    ■ 桥梁模式
    ■ 外观模式
    ■ 享元模式
    
    一、桥梁模式的简介
    桥梁模式(Bridge Pattern)也称桥接模式,是一种简单的、不常使用的设计模式;
    将抽象和实现解耦,使得两者可以独立地变化;
    
    image.png
    桥梁模式4个角色:
    ■ 抽象化(Abstraction)角色:该角色抽象化的给出定义,并保存一个对实现化对象的引用;
    ■ 实现化(Implementor)角色:该角色给出实现化角色的接口,但不给出具体的实现;
    ■ 修正抽象化(RefinedAbstraction)角色:该角色扩展抽象化角色,它引用实现化角色并对抽象化角色进行修正;
    ■ 具体实现化(ConcreteImplementor)角色:该角色对实现化角色接口中的方法进行具体实现;
    
    /**
     * 实现化角色
     */
    public interface Implementor {
    
        // 方法的实现化声明
        void operationImp();
    
    }
    
    
    /**
     * 具体实现化角色
     */
    public class ConcreteImplementor implements Implementor{
    
        // 方法的实现化实现
        @Override
        public void operationImp() {
            // 业务处理代码
            System.out.println("业务处理代码");
        }
    }
    
    /**
     * 抽象化角色
     */
    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 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 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 Red implements Color{
    
    
        @Override
        public String getColor() {
            return "红色";
        }
    }
    
    /**
     * 绿色
     */
    public class Green implements Color{
    
        @Override
        public String getColor() {
            return "绿色";
        }
    
    }
    
    /**
     * 应用代码
     */
    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();
        }
    }
    
    
    # 控制台输出:
    使用绿色画圆形
    使用红色画正方形
    
    参考:
    摘录 《设计模式(Java版)》韩敬海主编;(微信读书APP中有资源,可以直接阅读)
    

    相关文章

      网友评论

          本文标题:第4章 结构型模式-桥梁模式

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