首页 > 其他分享 >Day07-设计模式之桥接模式

Day07-设计模式之桥接模式

时间:2023-04-16 21:13:47浏览次数:38  
标签:桥接 void Day07 接口 实现 抽象类 设计模式 public

桥接模式介绍

  • 桥接模式(Bridge Pattern)是将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变,保持各部分的独立性以及应对他们的功能扩展。

UML类图及角色职责

在这里插入图片描述

image-20230411105128684

  • 抽象类(Abstraction):定义抽象接口,由聚合关系可知,抽象类中包含一个Implementor类型的对象,它与Implementor之间有关联关系,既可以包含抽象业务方法,也可以包含具体业务方法。

  • 实现类接口(Implementor):定义实现类的接口,这个接口可以与Abstraction类的接口不同。一般而言,实现类接口只定义基本操作,而抽象类的接口还可能会做更多复杂的操作。

  • 扩充抽象类(RefinedAbstraction):具体类,实现在抽象类中定义的接口,可以调用在Implementor中定义的方法。

  • 具体实现类(ConcreteImplementor):具体实现了Implementor接口,在不同的具体实现类中实现不同的具体操作。

代码实现

前言:举个栗子,我们的电脑因为安装了太多软件,运行软件的时候会占内存储器,于是我们可以对我们电脑去加装内存条,我们把电脑拿到电脑城,发现技术小哥打开机箱后直接将内存条插进了一个卡槽里,这时我们发现,加装内存条如此方便,原来是之前就预留了接口,我们直接将需要的内存条插进这个接口里就可以实现动态扩展,而不需要修改整个主机。这就是设计模式之桥接模式。

实现类接口

package day07_bridge.test03;

/**
 * @author coolsheep
 * @date 2023/3/28 10:54
 * @Describe 实现类接口
 */
public interface MemoryAPI {
    //加装内存
    public void add();
}

具体的实现类

package day07_bridge.test03;

/**
 * @author coolsheep
 * @date 2023/3/28 10:55
 * @Describe 具体的实现类
 */
public class Memory8GAPI implements MemoryAPI {

    @Override
    public void add() {
        System.out.println("我加装了8G内存");
    }
}

具体的实现类

package day07_bridge.test03;

/**
 * @author coolsheep
 * @date 2023/3/28 10:55
 * @Describe 具体的实现类
 */
public class Memory16GAPI implements MemoryAPI {

    @Override
    public void add() {
        System.out.println("我加装了16G内存");
    }
}

抽象类

package day07_bridge.test03;

/**
 * 抽象类
 */
public abstract class Computer {
    protected MemoryAPI memoryAPI;

    public void setMemoryAPI(MemoryAPI memoryAPI) {
        this.memoryAPI = memoryAPI;
    }

    public abstract void describe();
}

扩充的抽象类

package day07_bridge.test03;

/**
 * 扩充抽象类
 */
public class PCComputer extends Computer {
    @Override
    public void describe() {
        System.out.println("我是个人计算机");
        memoryAPI.add();
    }
}

扩充的抽象类

package day07_bridge.test03;

/**
 * 扩充抽象类
 */
public class ServerComputer extends Computer {
    @Override
    public void describe() {
        System.out.println("我是服务器");
        memoryAPI.add();
    }
}


客户端调用

package day07_bridge.test03;

//客户端调用
public class Client {
    public static void main(String[] args) {
        Computer pc = new PCComputer();
        pc.setMemoryAPI(new Memory8GAPI());
        pc.describe();

        Computer server = new ServerComputer();
        server.setMemoryAPI(new Memory16GAPI());
        server.describe();
    }
}

总结

  • 实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这有助于系统进行分层设计,从而产生更好的结构化系统。

  • 桥接模式替代多层继承方案,可以减少子类的个数,降低系统的管理和维护成本。

  • 桥接模式的引入增加了系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计和编程。

标签:桥接,void,Day07,接口,实现,抽象类,设计模式,public
From: https://www.cnblogs.com/coolsheep/p/17324070.html

相关文章

  • Day08-设计模式之装饰者模式
    设计模式之装饰者模式引例需求:假设现在有烧饵块:白米饵块(WhiteRice),紫米饵块(PurpleRice),黄米饵块(yellowRice),调料有热狗(HotDog),油条(oilNoodle),鸡柳(chicken),客户可以单点白米的,或者白米+调料的组合,计算相应的费用,要求在扩展饵块种类的时候,具有良好的扩展性,改动维护方便。一般解法方......
  • Day09-设计模式之组合模式
    设计模式之组合模式引例在现实生活中,存在很多“部分-整体”的关系,例如,大学中的学院与系、总公司中的分公司与部门,文件系统中的文件与文件夹等。对这些简单对象与复合对象的处理,如果用组合模式来实现会很方便。组合模式介绍组合模式定义如下:组合模式(CompositePattern)也称为......
  • 关于敏捷开发、系统重构、设计原则、设计模式之间的思考
    敏捷开发、系统重构、设计模式是软件开发中不同的概念,它们之间有一些联系和相互影响。敏捷开发方法强调快速响应客户需求,通过迭代和增量的方式来开发软件。在敏捷开发中,设计模式可以被用来提高软件质量和可维护性,因为设计模式是已经被证明有效的软件设计方案。在开发过程中,团队可......
  • 设计模式——工厂模式
    设计模式之工厂模式简单工厂模式简单工厂模式(SimpleFactoryPattern)是一种创建型设计模式,用于封装对象的创建逻辑。在简单工厂模式中,创建对象的逻辑被封装在一个工厂类中,而不是在客户端直接创建对象。简单工厂模式的主要参与角色:产品(Product):即要创建的对象,通常是一个接口或......
  • VMware虚拟机三种网络模式:桥接模式,NAT模式,仅主机模式
    VMware虚拟机三种网络模式:桥接模式,NAT模式,仅主机模式https://blog.csdn.net/qq_39192827/article/details/85872025?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-85872025-blog-109900553.235%5Ev28%5Epc_re......
  • day07-OpenFeign-服务调用
    SpringCloudOpenFeign-服务调用1.OpenFeign介绍https://github.com/spring-cloud/spring-cloud-openfeignOpenFeign是一个声明式WebService客户端,使用OpenFeign让编写WebService客户端更加简单它的使用方法是定义一个服务端口然后在上面添加注解OpenFeign也支持可插拔式......
  • 重学Java设计模式-行为型模式-责任链模式
    重学Java设计模式-行为型模式-责任链模式内容摘自:https://bugstack.cn/md/develop/design-pattern/2020-06-18-重学Java设计模式《实战责任链模式》.html#重学-java-设计模式-实战责任链模式「模拟618电商大促期间-项目上线流程多级负责人审批场景」责任链模式介绍图片来自......
  • Servlet注解的使用,简化配置 以及,使用模板方法设计模式优化oa项目
    Servlet注解的使用,简化配置以及,使用模板方法设计模式优化oa项目每博一文案有句谚语说:“一怒之下踢石头,只有痛着脚趾头。”比一件糟糕的事情更可拍的,是你用糟糕的态度去面对它。看过一个很有意思的故事:有个男人清早洗漱的时候,把自己的手表放在了桌子上。他的儿子不小心把手表......
  • 【享元设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介享元模式(FlyweightPattern),是一种结构型设计模式。主要用于减少创建对象的数量,以减少内存占用和提高性能。它摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,让你能在有限的内存容量中载入更多对象。当程序需要生成数量巨大的相似对象时,可能对内存有......
  • 【设计模式25】中介者模式
    基本概念具体案例#include<iostream>#include<vector>#include<string>#include<algorithm>#include<crtdbg.h>#include<unordered_map>usingnamespacestd;classCountry;//联合国机构classUniteNations{public: UniteNations()......