设计模式-桥接模式

一、所需要的类

一个接口:抽象出行为

N个接口实现类:实现具体的行为

一个抽象类:里面封装上面的类作为元素,然后再进行自己的行为

N个抽象类实现类:进行行为

二、实现代码

行为接口

java 复制代码
public interface Shape {
    public void draw();
}

行为接口是实现类1

java 复制代码
public class Square implements Shape {
    @Override
    public void draw() {
        System.out.println("画了一个正方形");
    }
}

行为接口是实现类2

java 复制代码
public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("画了一个圆");
    }
}

上层抽象类

java 复制代码
public abstract class Color {
    Shape shape;
    public abstract void applyColor();
}

抽象类实现类1

java 复制代码
public class BlueColor extends Color{
    public BlueColor(Shape shape)
    {
        this.shape = shape;
    }
    @Override
    public void applyColor() {
        shape.draw();
        System.out.println("喷上蓝色");
    }
}

抽象类是实现类2

java 复制代码
public class RedColor extends Color{
    public RedColor(Shape shape) {
        this.shape = shape;
    }
    @Override
    public void applyColor() {
        shape.draw();
        System.out.println("喷上红色");
    }
}

调用类

java 复制代码
@SpringBootApplication
public class BridgeApplication {
    public static void main(String[] args) {
        Square square = new Square();
        BlueColor blueColor = new BlueColor(square);
        RedColor redColor = new RedColor(square);
        blueColor.applyColor();
        redColor.applyColor();
        Square square1 = new Square();
        BlueColor blueColor1 = new BlueColor(square1);
        RedColor redColor1 = new RedColor(square1);
        blueColor1.applyColor();
        redColor1.applyColor();
    }
}

三、总结

桥接模式,处理的是多对多的组合,一层套一层

相关推荐
小阳拱白菜25 分钟前
java异常学习
java
FrankYoou1 小时前
Jenkins 与 GitLab CI/CD 的核心对比
java·docker
麦兜*2 小时前
Spring Boot启动优化7板斧(延迟初始化、组件扫描精准打击、JVM参数调优):砍掉70%启动时间的魔鬼实践
java·jvm·spring boot·后端·spring·spring cloud·系统架构
KK溜了溜了2 小时前
JAVA-springboot 整合Redis
java·spring boot·redis
天河归来2 小时前
使用idea创建springboot单体项目
java·spring boot·intellij-idea
weixin_478689763 小时前
十大排序算法汇总
java·算法·排序算法
码荼3 小时前
学习开发之hashmap
java·python·学习·哈希算法·个人开发·小白学开发·不花钱不花时间crud
IT_10243 小时前
Spring Boot项目开发实战销售管理系统——数据库设计!
java·开发语言·数据库·spring boot·后端·oracle
ye904 小时前
银河麒麟V10服务器版 + openGuass + JDK +Tomcat
java·开发语言·tomcat
武昌库里写JAVA4 小时前
Oracle如何使用序列 Oracle序列使用教程
java·开发语言·spring boot·学习·课程设计