Java描述设计模式(08):桥接模式

Java描述设计模式(08):桥接模式

原创知了一笑2019-08-23 07:00:00

写在前面

推荐阅读:

Java描述设计模式(07):适配器模式

Java描述设计模式(06):建造者模式

Java描述设计模式(05):原型模式

源码地址:

点这里,开篇就是了。

一、桥接模式简介

1、基础描述

桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”。

2、场景问题描述

1)、场景分析

在一个复杂的系统中,消息通知是一个必备模块,一般封装方式主要从下面两个方式入手:

- 消息类型用户端消息(user-client)管理端消息(system-client)- 消息接收邮件发送(email)短信发送(msg)

2)、场景图解

3)、源码实现

/** * 桥接模式场景应用 */public class C01_InScene { public static void main(String[] args) { // 创建具体的实现对象 MsgImplementor implementor = new SendBySMS() ; // 创建普通的消息对象 AbstractMsg abstractMessage = new UserMsg(implementor); abstractMessage.sendMessage('您的账户异地登陆', '用户A0001'); // 切换为邮件方式且加急处理 implementor = new SendByEmail() ; abstractMessage = new AdminMsg(implementor); abstractMessage.sendMessage('项目上线通知', '运维S0001'); }}/** * 封装消息类型 */abstract class AbstractMsg { // 持有一个实现部分的对象 MsgImplementor impl ; public AbstractMsg (MsgImplementor impl){ this.impl = impl ; } /** * 发送消息,委派给实现部分的方法 * @param message 要发送消息的内容 * @param toUser 消息的接受者 */ public void sendMessage (String message, String toUser){ this.impl.send(message, toUser); }}class AdminMsg extends AbstractMsg{ public AdminMsg(MsgImplementor impl) { super(impl); } @Override public void sendMessage(String message, String toUser) { message = '辛苦的管理员:' message; super.sendMessage(message, toUser); }}class UserMsg extends AbstractMsg{ public UserMsg(MsgImplementor impl) { super(impl); } @Override public void sendMessage(String message, String toUser) { message = '尊敬的用户:' message ; super.sendMessage(message, toUser); }}/** * 封装消息发送 */interface MsgImplementor { void send (String message , String toUser) ;}class SendBySMS implements MsgImplementor{ @Override public void send(String message, String toUser) { System.out.println('短信通知:' toUser ';内容:' message); }}class SendByEmail implements MsgImplementor{ @Override public void send(String message, String toUser) { System.out.println('邮件通知:' toUser ';内容:' message); }}

二、桥接模式

1、模式图解

2、核心角色

1、抽象化(Abstraction)角色 抽象化给出的定义,并保存一个对实现化对象的引用。2、修正抽象化(RefinedAbstraction)角色 扩展抽象化角色,改变修正父类对抽象化的定义。3、实现化(Implementor)角色 这个角色给出实现化角色的接口,但不给出具体的实现。4、具体实现化(ConcreteImplementor)角色 这个角色给出实现化角色接口的具体实现。

3、源码封装

abstract class Abstraction { private Implementor implementor ; public Abstraction (Implementor implementor){ this.implementor = implementor ; } // 实例方法 public void operation (){ implementor.operationImpl(); }}class RefinedAbstraction extends Abstraction{ public RefinedAbstraction(Implementor implementor) { super(implementor); } //其他的操作方法 public void otherOperation(){ }}abstract class Implementor { // 示例方法,实现抽象部分需要的某些具体功能 public abstract void operationImpl () ;}class ConcreteImplementorA extends Implementor{ @Override public void operationImpl() { System.out.println('ConcreteImplementorA.operationImpl()'); }}class ConcreteImplementorB extends Implementor{ @Override public void operationImpl() { System.out.println('ConcreteImplementorB.operationImpl()'); }}

三、Java应用场景

桥梁模式在Java应用中的一个非常典型的例子就是JDBC驱动器。抽象API可以对各种数据库引擎发出SQL指令,并不直接与数据库引擎互动,JDBC驱动器负责这个底层的工作。
JDBC的这种架构,把抽象部分和具体部分分离开来,从而使得抽象部分和具体部分都可以独立地扩展。
收藏
举报
12 条评论
(0)

相关推荐

  • PHP设计模式之桥接模式

    PHP设计模式之桥接模式 桥接模式,在程序世界中,其实就是组合/聚合的代名词.为什么这么说呢?熟悉面向对象的我们都知道继承的好处,子类可以共享父类的很多属性.功能.但是,继承也会带来一个问题,那就是严 ...

  • 设计模式(7) 桥接模式

    桥接模式的概念与实现 为什么叫桥接模式 桥接模式的适用场景 继承是面向对象的三大特性之一,但很多时候使用继承的结果却不尽如人意.除了人尽皆知的紧耦合问题外,有的时候还会导致子类的快速膨胀. 设想这样一 ...

  • 软件设计模式修炼 -- 观察者模式

    观察者模式是一种经常使用的设计模式,在软件系统中对象并不是孤立存在的,一个对象行为的改变可能会导致其他与之存在依赖关系的对象行为发生改变,观察者模式用于描述对象之间的依赖关系. 模式动机 很多情况下, ...

  • 图解Java设计模式之桥接模式

    手机操作问题 传统方案解决手机操作问题 传统方案解决手机操作问题分析 桥接模式(Bridge)-基本介绍 桥接模式解决手机操作问题 桥接模式在JDBC中的源码解析 桥接模式的注意事项和细节 桥接模式其 ...

  • java设计模式7——桥接模式

    java设计模式7--桥接模式 1.桥接模式介绍 桥接模式是将抽象部分与它的实现部分分离,使他们都可以独立的变化.它是一种对象结构型模式,又称为柄体模式或接口模式. 2.解决问题 2.1.将复杂的组合 ...

  • [PHP小课堂]PHP设计模式之桥接模式

    [PHP小课堂]PHP设计模式之桥接模式 关注公众号:[硬核项目经理]获取最新文章 添加微信/QQ好友:[DarkMatterZyCoder/149844827]免费得PHP.项目管理学习资料

  • Java设计模式【命令模式】

    命令模式 命令模式很好理解,举个例子,司令员下令让士兵去干件事情,从整个事情的角度来考虑,司令员的作用是,发出口令,口令经过传递,传到了士兵耳朵里,士兵去执行.这个过程好在,三者相互解耦,任何一方都不 ...

  • C#设计模式-桥接模式(Bridge Pattern)

    引言 例如我有好几个项目,需要外包出去做各种类型的测试,不同的公司基础费用不同,不同的测试类型价格也是不同的.此时不同的项目选择不同的公司和不同类型的测试进行测试价格都是不同的.于是我们可以创建一个项 ...

  • 图解Java设计模式之解释器模式

    图解Java设计模式之解释器模式 四则运算问题 传统方案解决四则运算问题分析 解释器模式基本介绍 解释器模式来实现四则 解析器模式在Spring框架中的源码分析 解释器模式的注意事项和细节 四则运算问 ...

  • 图解Java设计模式之备忘录模式

    游戏角色状态恢复问题 传统方案解决游戏角色恢复 传统的方式的问题分析 备忘录模式基本介绍 备忘录模式原理类图 游戏角色恢复状态实例 备忘录模式的注意事项和细节 游戏角色状态恢复问题 游戏角色有攻击力和 ...