Java设计模式之桥接模式

1.桥接模式概述

1.1 桥接模式定义

桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。

1.2 使用场景

桥接就是一个对象不同维度的组合,比如女士的皮包,按颜色可以分为红橙黄绿青蓝紫,按用途可以分为钱包,购物包,电脑包,按背的方式可以斜背,后背,前背。

两种实现方式,一是所有组合方式建一个类,第二种是按照不同维度组合,也就是桥接模式。

2. 桥接模式实现

/**
 * 日志级别
 *
 * @author 20023262
 * @date 2020/12/11
 * @since 1.0
 */
public interface LoggerLevel {
    /**
     * 设置类型
     */
    void write(String logType);
}
/**
 * warn日志级别
 *
 * @author 20023262
 * @date 2020/12/11
 * @since 1.0
 */
public class LoggerLevelWarnImpl implements LoggerLevel {
    @Override
    public void write(String logType) {
        System.out.println("【warn】" + logType);
    }
}
/**
 * error日志级别
 *
 * @author 20023262
 * @date 2020/12/11
 * @since 1.0
 */
public class LoggerLevelErrorImpl implements LoggerLevel {
    @Override
    public void write(String logType) {
        System.out.println("【error】" + logType);
    }
}
/**
 * info日志级别
 *
 * @author 20023262
 * @date 2020/12/11
 * @since 1.0
 */
public class LoggerLevelInfoImpl implements LoggerLevel {
    @Override
    public void write(String logType) {
        System.out.println("【info】" + logType);
    }
}
/**
 * 日志业务类型
 *
 * @author 20023262
 * @date 2020/12/11
 * @since 1.0
 */
public abstract class Logger {
    public LoggerLevel loggerLevel;

    public void setLoggerLevel(LoggerLevel loggerLevel) {
        this.loggerLevel = loggerLevel;
    }

    public abstract void print();

}
/**
 * 操作日志类型
 *
 * @author 20023262
 * @date 2020/12/11
 * @since 1.0
 */
public class LoggerOperator extends Logger {

    @Override
    public void print() {
        loggerLevel.write("操作日志");
    }
}
/**
 * 交易日志类型
 *
 * @author 20023262
 * @date 2020/12/11
 * @since 1.0
 */
public class LoggerTransaction extends Logger {
    @Override
    public void print() {
        loggerLevel.write("交易日志");
    }
}

/**
 * 桥接模式测试类
 * 桥接要做的就是一个对象不同维度的组合
 *
 *
 * @author 20023262
 * @date 2020/12/11
 * @since 1.0
 */
public class BridgeTest {

    @Test
    public void bridgeTest() {
        //警告日志
        LoggerLevel loggerLevelWarn = new LoggerLevelWarnImpl();
        //操作日志
        Logger loggerOperator = new LoggerOperator();
        //警告的操作日志
        loggerOperator.setLoggerLevel(loggerLevelWarn);
        loggerOperator.print();

        //错误日志
        LoggerLevel loggerLevelError  = new LoggerLevelErrorImpl();
        //交易日志
        Logger loggerTransaction = new LoggerTransaction();
        //错误的交易日志
        loggerTransaction.setLoggerLevel(loggerLevelError);
        loggerTransaction.print();


    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值