桥接模式(Bridge Pattern) :
将抽象部分与它的实现部分分离,使他们都可以独立地变化。(Decouple an abstraction from its implementation so that the two can vary independently.)
就像一个桥,将两个变化维度连接起来。各个维度都可以独立的变化。故称之为:桥接模式
核心要点 : 处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。
桥接模式优点:
分离抽象部分和实现部分:桥梁模式分离了抽象部分和实现部分,从而极大的提高了系统的灵活性。让抽象部分和实现部分独立出来,分别定义接口,这有助于对系统进行分层,从而产生更好的结构化的系统。
更好的扩展性:桥梁模式使得抽象部分和实现部分可以分别独立的扩展,而不会相互影响,从而大大提高了系统的可扩展性。
桥接模式实际开发中应用场景:
JDBC驱动程序;
AWT中的Peer架构;
银行日志管理:
格式分类:操作日志、交易日志、异常日志
距离分类:本地记录日志、异地记录日志
人力资源系统中的奖金计算模块:
奖金分类:个人奖金、团体奖金、激励奖金。
部门分类:人事部门、销售部门、研发部门。
OA系统中的消息处理:
业务类型:普通消息、加急消息、特急消息
发送消息方式:系统内消息、手机短信、邮件
案例一:
考虑这样一个实际的业务功能:发送提示消息。基本上所有带业务流程处理的系统都会有这样的功能,比如OA上有未处理完毕的文件,需要发送一条消息提示他。
从业务上看,消息又分为普通消息、加急消息,不同的消息类型,业务功能处理是不一样的,比如加急消息是在消息上添加加急;从发送消息的手段上看,又有系统内短消息、邮件等。
该过程可分为5步:
步骤1:定义发送消息方法的接口
/**
* 实现消息发送的统一接口
*/
public interface MessageImplementor {
//要发送的消息的内容和接收人
void send(String message, String toUser);
}
步骤2:定义发送消息方法接口的实现类
/**
* 系统内短消息的实现类
* SMS(Short Message Service)短信息服务
*/
public class MessageSMS implements MessageImplementor {
@Override
public void send(String message, String toUser) {
System.out.println(String.format("使用系统内部短消息的方法,发送消息 %s 给 %s", message, toUser));
}
}
/**
* 邮件短消息的实现类
*/
public class MessageEmail implements MessageImplementor {
@Override
public void send(String message, String toUser) {
System.out.println(String.for