当前位置: 首页 > 科技观察

什么是桥接模式?你可能不知道

时间:2023-03-12 23:01:59 科技观察

1。桥接模式概述2。桥接模式的结构与实现3.桥接模式应用实例4.桥接模式和适配器模式的结合5.桥接模式的优缺点及适用环境《Github:https://github.com/nateshao/design-demo/tree/main/JavaDesignPatterns/10-bridge1.桥接模式概述定义》桥接模式:将抽象部分与其本身解耦实现部分使两者可以是独立的Variety。对象结构模式也称为句柄体(HandleandBody)模式或接口(Interface)模式。它以抽象关联代替传统的多层继承,将类之间的静态继承关系转变为动态的对象组合关系。结构桥接模式包括以下四种角色:Abstraction(抽象类)RefinedAbstraction(扩展抽象类)Implementor(实现类接口)ConcreteImplementor(具体实现类)2.桥接模式的结构与实现典型实现类接口代码:publicinterfaceImplementor{publicvoidoperationImpl();}典型的具体实现类代码:publicclassConcreteImplementorimplementsImplementor{publicvoidoperationImpl(){//具体业务方法的实现}}典型的具体实现类代码:publicabstractclassAbstraction{protectedImplementorimpl;//实现类接口对象的定义publicvoidsetImpl(Implementorimpl){this.impl=impl;}publicabstractvoidoperation();//声明抽象业务方法}典型扩展抽象类(提炼抽象类)代码:publicclassRefinedAbstractionextendsAbstraction{publicvoidoperation(){//业务代码impl.operationImpl();//调用i实现类方法//业务代码}}3.桥接模式应用示例》示例描述:某软件公司想开发一个跨平台的图片浏览系统,要求系统能够显示BMP等多种格式的文件,JPG,GIF,PNG等,并可在Windows、Linux、UNIX等多种操作系统上运行。系统首先将各种格式的文件解析成像素矩阵(Matrix),然后将像素矩阵显示在屏幕,在不同的操作系统中可以调用不同的绘图函数来绘制像素矩阵。此外,系统需要具有良好的可扩展性以支持未来新的文件格式和操作系统。尝试使用桥接模式设计跨平台的图像浏览系统。示例类图:跨平台图片浏览系统结构图示例代码Matrix:像素矩阵类,辅助类ImageImp:抽象操作系统实现类,作为实现类接口WindowsImp:Windows操作系统实现类,作为具体实现类LinuxImp:Linux操作系统实现类,作为具体实现类UnixImp:UNIX操作系统实现类,作为具体实现类Image:抽象图片类,作为抽象类JPGImage:JPG格式图片类,作为扩展类抽象类PNGImage:PNG格式图片类,作为扩展抽象类BMPImage:BMP格式图片类,作为扩展抽象类GIFImage:GIF格式图片类,作为扩展抽象类Client:客户端测试类《结果与分析》:如果您需要更改图像文件格式或更换操作系统,请st修改配置文件designpatterns.bridge.JPGImagedesignpatterns。bridge.WindowsImp4.桥接模式与适配器模式的结合桥接模式:用于系统的初步设计,对于具有两个自变量维度的类,分为抽象和实现两个角色。让他们分开改Adapter模式:当发现系统和已有的类不能协同工作时,将桥接模式和适配器模式结合起来。5、桥接模式的优缺点及适用环境模式的优势。层继承方案大大减少了子类的数量,提高了系统的可扩展性。在不修改原有系统的情况下,可以任意扩展两个维度之一。它符合开闭原则。该模式的缺点将增加对系统的了解。设计难度,由于关系是建立在抽象层上,开发者不容易从一开始就对抽象层进行设计和编程,正确识别系统中两个独立变化的维度。并在具体化之间添加更多避免在两个层次之间建立静态继承关系的灵活性。抽象部分和实现部分可以通过继承的方式独立扩展,互不影响。一个类有两个(或多个)独立变化的维度,而这两个(或多个)维度需要独立于不想使用继承的系统进行扩展或由于多级继承导致系统类数量急剧增加