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

1、桥接模式介绍

桥接模式是将抽象部分与它的实现部分分离,使他们都可以独立的变化。它是一种对象结构型模式,又称为柄体模式或接口模式。

2、解决问题

2.1、将复杂的组合设计问题转变为可以桥接的组合问题。如电脑的例子,电脑有类型和品牌,两者可以任意组合。

2.2、没有用设计模式时的示意图

2.3、使用桥接模式后的示意图

将这个场景中的两个变化的维度分离,品牌和类型。两者通过桥接进行两两组合。

3、代码演示:

3.1、编写品牌的抽象类

package com.xgp.company.结构性模式.桥接模式;

/**
* 品牌类
*/
public interface Brand {
void info();
}

3.2、由抽象类诞生出品牌

苹果:

package com.xgp.company.结构性模式.桥接模式;

/**
* 苹果品牌
*/
public class Apple implements Brand {
@Override
public void info() {
System.out.print("苹果");
}
}

联想:

package com.xgp.company.结构性模式.桥接模式;

public class Laptop extends Computer {
public Laptop(Brand brand) {
super(brand);
} @Override
protected void info() {
super.info();
System.out.println("笔记本");
}
}

3.3、电脑类型的抽象类

package com.xgp.company.结构性模式.桥接模式;

/**
* 抽象的电脑类型类
*/
public abstract class Computer { //组合:品牌,电脑自带品牌
protected Brand brand; public Computer(Brand brand) {
this.brand = brand;
} protected void info() {
//自带品牌
brand.info();
}
}

3.4、由电脑类型的抽象类诞生实现类

台式电脑:

package com.xgp.company.结构性模式.桥接模式;

public class Desktop extends Computer {
public Desktop(Brand brand) {
super(brand);
} @Override
protected void info() {
super.info();
System.out.println("台式机");
}
}

笔记本电脑:

package com.xgp.company.结构性模式.桥接模式;

public class Laptop extends Computer {
public Laptop(Brand brand) {
super(brand);
} @Override
protected void info() {
super.info();
System.out.println("笔记本");
}
}

3.5、编写测试类,进行桥接

package com.xgp.company.结构性模式.桥接模式;

public class Test {
public static void main(String[] args) {
//苹果笔记本
Computer computer = new Laptop(new Apple());
computer.info();
//联想台式机
Computer computer12 = new Desktop(new Lenovo());
computer12.info();
}
}

输出结果:

苹果笔记本
联想台式机

4、类图示意:

5、好处分析:

6、弊端分析:

7、最佳实现

8、现已经使用的场景

java设计模式7——桥接模式的更多相关文章

  1. java设计模式之桥接模式

    桥接模式 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化.这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦.这种模式涉及到一个作为桥接的 ...

  2. Java设计模式:桥接模式

    问题提出 生活中有很多事物集合,设为A1,A2......Am ,而每个事物都有功能F1,F2....Fn. 例如邮局的发送业务.简单模拟有两类事物:信件和包裹,均有平邮和挂号邮寄功能.程序设计中如何 ...

  3. Java设计模式应用——桥接模式

    性能管理系统中,数据产生后需要经过采集,汇聚,入库三个流程,用户才能查询使用. 采集可以是snmp采集,也可以是ems采集:汇聚可以使storm汇聚,也可以是spark汇聚:入库可以是hdfs入库,也 ...

  4. java设计模式之-----桥接模式

    一.概念定义 将抽象部分和实现部分分离,使他们都可以独立的变化.(这句话有点抽象啊..) 在软件系统中,某种类型由于自身逻辑,具有多个维度的变化,如何利用面向对象的技术来使得该类型沿着多方向变化,而又 ...

  5. JAVA设计模式之桥接模式(bridge)

    桥接模式: 分离抽象与具体实现,让他们可以独自发展,防止类爆炸 场景: 过年走亲戚是我们中国人传统的习俗,走亲戚那就少不了要买东西(苹果,牛奶等等),这些具体的东西就是具体的类 蒙牛牛奶,有机苹果,有 ...

  6. 八戒转世投胎竟然是Java设计模式:桥接模式

    目录 示例 代码实例 桥接模式 定义 意图 主要解决问题 何时使用 优缺点 八戒转世投胎的故事 示例 请开发一个画图程序,可以画各种颜色不同形状的图形,请用面向对象的思 想设计图形 分析: 1.比如有 ...

  7. java面试题之----jdbc中使用的设计模式(桥接模式)

    1.JDBC(JavaDatabase Connectivity) JDBC是以统一方式访问数据库的API. 它提供了独立于平台的数据库访问,也就是说,有了JDBC API,我们就不必为访问Oracl ...

  8. Java设计模式——装饰者模式

    JAVA 设计模式 装饰者模式 用途 装饰者模式 (Decorator) 动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator 模式相比生成子类更为灵活. 装饰者模式是一种结构式模式 ...

  9. 浅析JAVA设计模式之工厂模式(一)

    1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...

随机推荐

  1. 键盘优雅弹出与ios光标乱飘解决方案

    前言 在移动开发中,会遇到这样的情况,比如说有一个输入框在最底部的时候,我们弹起输入框,输入框不会在输入键盘上. 说明白简单点就是,输入框被键盘挡住了.而且在原生中,输入框应该正好在输入键盘上,但是h ...

  2. wannafly 27 D 巧妙求取约数

    链接:https://www.nowcoder.com/acm/contest/215/D来源:牛客网 题目描述 “我不知道你在说什么,因为我只是个pupil.”--绿魔法师 一个空的可重集合S. n ...

  3. js强制限制输入允许两位小数

    <input type="text" value="@item.CostCash.Value.ToString("#0.00")" c ...

  4. Callable接口用法

    注意点:FutureTask是Runnable的实现类,它的构造器可以传Callable接口的实现类. 例子如下: class MyThread implements Callable<Inte ...

  5. Python基础————文件操作

    文件操作 4.1 文件基本操作 obj = open('路径',mode='模式',encoding='编码') # 表示要干嘛 读 还是写 obj.write() #写什么内容 obj.read() ...

  6. java中implements和extends的区别

    1,extends是继承某个类的,可以使用某个类的方法,也可以重写父类的方法. 2,implements是用于实现类接口,可以实现一个或多个类的接口,接口的方法一般为空的,所以必须重写这一个或多个的方 ...

  7. python笔记05

    python笔记05 数据类型 上个笔记知识点总结: 列表中extend特性:extend,(内部循环,将另外一个列表,字符串.元组添加到extend前的列表中) li.extend(s),将s中元素 ...

  8. Java基础系列1:Java基本类型与封装类型

    Java基础系列1:Java基本类型与封装类型 当初学习计算机的时候,教科书中对程序的定义是:程序=数据结构+算法,Java基础系列第一篇就聊聊Java中的数据类型. 本篇聊Java数据类型主要包括两 ...

  9. 痞子衡嵌入式:知名半导体MCU大厂软件开发C代码规范

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是飞思卡尔软件开发C语言编码规范. 2020鼠年春节是个漫长的假期,痞子衡在家百无聊赖,翻出了2016年10月1日(这个时间是痞子衡正式开始 ...

  10. HTTP权威指南之URL与资源

    前言 web基础中介绍了URI.URL与URN: URI是一类更通用的资源标识符,URL是它的一个子集: URI是一个通用的概念,它主要由URL与URN组成: URL是通过描述资源的位置来标识资源的, ...