博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式——桥接模式
阅读量:6761 次
发布时间:2019-06-26

本文共 1720 字,大约阅读时间需要 5 分钟。

桥接模式核心:处理多层继承结构,处理多维度变化的场景。将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。

桥接模式特点: 桥接模式可以取代多层继承的方案。多层继承违背了单一职责原则。复用性较差。类的个数也非常多。桥接模式可以极大的减少子类的个数,从而降低管理和维护的成本。 桥接模式极大的提高了系统可扩展性,在两个变化维度中任意扩展一个维度,都不需要修改原有的系统,符合开闭原则。 就像一个桥将两个变化的维度连接起来。各个维度都可以独立的变化,故称之为桥模式。

应用: JDBC驱动程序

          AWT的peer架构      

          OA系统中的消息处理。

桥接模式的优点:

         将实现与抽象解耦,不再与界面之间绑定。

         抽象和实现可以独立的扩展,不会影响到对方。

         对于具体的抽象类所做的改变不会影响到客户端的使用。

Demo:

 

package com.wxisme.bridge;/** * 品牌类型维度 * @author Administrator * */public interface Brand {    void sale();}class Lenovo implements Brand {    @Override    public void sale() {        System.out.println("联想电脑");    }    }class Dell implements Brand {        @Override    public void sale() {        System.out.println("戴尔电脑");    }    }class Shenzhou implements Brand {        @Override    public void sale() {        System.out.println("神州电脑");    }    }/** * 电脑类型维度 * @author Administrator * */public class Computer {        protected Brand brand;        public Computer(Brand b) {        this.brand = b;    }        public void sale(){        brand.sale();    }    }class Desktop extends Computer {    public Desktop(Brand b) {        super(b);    }        @Override    public void sale() {        super.sale();        System.out.println("台式电脑");    }}class Laptop extends Computer {        public Laptop(Brand b) {        super(b);    }        @Override    public void sale() {        super.sale();        System.out.println("笔记本电脑");    }}public class Client {    public static void main(String[] args) {                Computer  c1 = new Laptop(new Lenovo());        c1.sale();                Computer c2 = new Desktop(new Shenzhou());        c2.sale();                    }}

 

运行结果:

联想电脑
笔记本电脑
神州电脑
台式电脑

 

转载于:https://www.cnblogs.com/wxisme/p/4553362.html

你可能感兴趣的文章
iOS buttonWithType:101 苹果私有api
查看>>
条款10:令operator=返回一个reference to *this
查看>>
单例模式
查看>>
.NET实现多个不同有效时间Session方案思考
查看>>
移动端常见问题及解决方案
查看>>
Github 使用的Markdown语言
查看>>
UVA 247 - Calling Circles (Floyd)
查看>>
Exchange: How to get Mailbox size in Exchange Shell?
查看>>
SqlBulkCopy使用心得
查看>>
几点要求自己也可以借鉴
查看>>
Highcharts的一些属性
查看>>
xadmin 组件拓展自定义使用
查看>>
5.14 数据库函数,流程控制
查看>>
Django 中间件
查看>>
学城项目知识点整理及源码
查看>>
sqlServer,oracle中case关键字的用法
查看>>
表驱动法之保险费率
查看>>
苹果硅胶套市场空间上百亿:合作厂商利润达30%
查看>>
娇俏2011年春装
查看>>
备份还原oracle数据库
查看>>