桥接模式介绍

桥接模式介绍1 桥接模式 Bridge 模式 是指 将实现与抽象放在两个不同的类层次中 使两个层次可以独立改变 是一种结构型设计模式 2 桥接模式基于类的最小设计原则 通过使用封装 聚合及继承等行为让不同的类承担不同的职责 它的主要特点是把抽象 Abstraction 与行为实现 Implementati 分离开来 从而可以保持各部分的独立性以及应对他们的功能扩展 3 对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统 桥接模式尤为适用

一、基本介绍

  1. 桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变,是一种结构型设计模式。
  2. 桥接模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。
  3. 对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。

二、代码案例

(1)新建品牌接口及其实现类

public interface Brand { 
    void open(); void close(); void product(); } 
public class Huawei implements Brand { 
    @Override public void open() { 
    System.out.println(" 开启华为生产线 "); } @Override public void close() { 
    System.out.println(" 关闭华为生产线 "); } @Override public void product() { 
    System.out.println(" 生产华为设备 "); } } 
public class XiaoMi implements Brand { 
    @Override public void open() { 
    // TODO Auto-generated method stub System.out.println(" 开启小米生产线 "); } @Override public void close() { 
    // TODO Auto-generated method stub System.out.println(" 关闭小米生产线 "); } @Override public void product() { 
    // TODO Auto-generated method stub System.out.println(" 生产小米设备 "); } } 

(2)新建设备抽象类及其子类

public abstract class Machine { 
    private Brand brand; public Machine(Brand brand) { 
    super(); this.brand = brand; } protected void open() { 
    this.brand.open(); } protected void close() { 
    brand.close(); } protected void product() { 
    brand.product(); } } 
public class Phone extends Machine { 
    public Phone(Brand brand) { 
    super(brand); } public void open() { 
    super.open(); System.out.println(" 手机生产线 "); } public void close() { 
    super.close(); System.out.println(" 手机生产线 "); } public void product() { 
    super.product(); System.out.println(" 手机生产线 "); } } 
public class Watch extends Machine { 
    public Watch(Brand brand) { 
    super(brand); } public void open() { 
    super.open(); System.out.println(" 手表生产线 "); } public void close() { 
    super.close(); System.out.println(" 手表生产线 "); } public void product() { 
    super.product(); System.out.println(" 手表生产线 "); } } 

(3)测试

public class Client { 
    public static void main(String[] args) { 
    Machine phone = new Phone(new XiaoMi()); phone.open(); phone.product(); phone.close(); System.out.println("======================="); Machine watch = new Watch(new Huawei()); watch.open(); watch.product(); watch.close(); System.out.println("======================="); Machine phone2 = new Phone(new Huawei()); phone2.open(); phone2.product(); phone2.close(); System.out.println("======================="); Machine watch2 = new Watch(new XiaoMi()); watch2.open(); watch2.product(); watch2.close(); } } 

三、UML类图

桥接模式UML类图

四、桥接模式小结

  • 实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这有助于系统进行分层设计,从而产生更好的结构化系统。
  • 对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了,其它的部分由具体业务来完成。
  • 桥接模式替代多层继承方案,可以减少子类的个数,降低系统的管理和维护成本。
  • 桥接模式的引入增加了系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计和编程。
  • 桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围有一定的局限性,即需要有这样的应用场景。

其他设计模式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233817.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 机器学习之KNN最邻近分类算法[通俗易懂]

    机器学习之KNN最邻近分类算法[通俗易懂]KNN算法简介KNN(K-NearestNeighbor)最邻近分类算法是数据挖掘分类(classification)技术中最简单的算法之一,其指导思想是”近朱者赤,近墨者黑“,即由你的邻居来推断出你的类别。KNN最邻近分类算法的实现原理:为了判断未知样本的类别,以所有已知类别的样本作为参照,计算未知样本与所有已知样本的距离,从中选取与未知样本距离最近的K个已知样本,根据少数服从多数…

    2022年4月27日
    51
  • 2021 navicat激活码最新_最新在线免费激活

    (2021 navicat激活码最新)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月27日
    143
  • 3d slicer matlab,3DSlicer3Architecture架构介绍.ppt

    3d slicer matlab,3DSlicer3Architecture架构介绍.ppt3DSlicer3Architecture架构介绍Slicer3ArchitectureNA-MICArchitectureSlicer3“ObserverMVC”PatternMRML(Model)ForSceneDescriptionandApplicationStateMRMLNodesarePersistentandUndoableScenea…

    2025年6月10日
    6
  • navicat注册码最新_navicat激活工具

    navicat注册码最新_navicat激活工具navicat10.1.7版本,亲测可用。名:NAVN-LNXG-XHHX-5NOO组织:NAVN-LNXG-XHHX-5NOO注册码:NAVN-LNXG-XHHX-5NOO

    2022年10月13日
    1
  • Mqtt开发笔记:Mqtt服务器搭建

    Mqtt开发笔记:Mqtt服务器搭建若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062本文章博客地址:各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门

    2022年4月29日
    107
  • 企业局域网的组建步骤和方法

    企业局域网的组建步骤和方法什么是局域网?所谓的局域网(LocalAreaNetwork,简称LAN),用于将有限范围内(例如一个实验室、一层办公楼或者校园)的各种计算机、终端与外部设备互联成网。企业局域网怎么建立?首先来了

    2022年7月4日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号