桥接模式就是对一个类的方法进行抽象化,吧不相关的因素提取出来,发展出第二个类

 1 package com.shejimoshi.structural.Bridge;
 2
 3
 4 /**
 5  * 功能:桥接模式使用
 6  *       意图:将抽象部分与它的实现部分分离,使他们都可以独立的变化
 7  *     适用性:你不希望在抽象和它的实现部分之间有一个固定的绑定关系。
 8  *           类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充
 9  *         对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译
10  *         你想在多个对象间共享实现,但同时要求客户并不知道这一点
11  * 时间:2016年2月17日下午7:45:10
12  * 作者:cutter_point
13  */
14 public abstract class Systeml
15 {
16     //相应系统的软件
17     protected Soft soft;
18
19     public abstract void using();
20
21     public void installSoft(Soft soft)
22     {
23         this.soft = soft;
24     }
25 }

 1 package com.shejimoshi.structural.Bridge;
 2
 3
 4 /**
 5  * 功能:桥接模式使用
 6  *       意图:将抽象部分与它的实现部分分离,使他们都可以独立的变化
 7  *     适用性:你不希望在抽象和它的实现部分之间有一个固定的绑定关系。
 8  *           类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充
 9  *         对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译
10  *         你想在多个对象间共享实现,但同时要求客户并不知道这一点
11  * 时间:2016年2月17日下午7:54:12
12  * 作者:cutter_point
13  */
14 public class Window extends Systeml
15 {
16     //默认构造函数
17     public Window(){}
18
19     public Window(Soft soft)
20     {
21         //给系统安装相应的软件
22         this.soft = soft;
23     }
24
25     @Override
26     public void using()
27     {
28         System.out.print("Window 系统运行:");
29         soft.run();//系统运行相应的软件
30     }
31
32 }

 1 package com.shejimoshi.structural.Bridge;
 2
 3
 4 /**
 5  * 功能:桥接模式使用
 6  *       意图:将抽象部分与它的实现部分分离,使他们都可以独立的变化
 7  *     适用性:你不希望在抽象和它的实现部分之间有一个固定的绑定关系。
 8  *           类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充
 9  *         对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译
10  *         你想在多个对象间共享实现,但同时要求客户并不知道这一点
11  * 时间:2016年2月17日下午7:57:12
12  * 作者:cutter_point
13  */
14 public class Linux extends Systeml
15 {
16     //默认构造函数
17     public Linux(){}
18
19     public Linux(Soft soft)
20     {
21         //给系统安装相应的软件
22         this.soft = soft;
23     }
24
25     @Override
26     public void using()
27     {
28         System.out.print("Linux 系统运行:");
29         soft.run();//系统运行相应的软件
30     }
31
32 }

 1 package com.shejimoshi.structural.Bridge;
 2
 3
 4 /**
 5  * 功能:桥接模式使用
 6  *       意图:将抽象部分与它的实现部分分离,使他们都可以独立的变化
 7  *     适用性:你不希望在抽象和它的实现部分之间有一个固定的绑定关系。
 8  *           类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充
 9  *         对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译
10  *         你想在多个对象间共享实现,但同时要求客户并不知道这一点
11  * 时间:2016年2月17日下午7:52:58
12  * 作者:cutter_point
13  */
14 public interface Soft
15 {
16     public void run();
17 }

 1 package com.shejimoshi.structural.Bridge;
 2
 3
 4 /**
 5  * 功能:编译器
 6  * 时间:2016年2月17日下午7:58:17
 7  * 作者:cutter_point
 8  */
 9 public class Compiler implements Soft
10 {
11
12     @Override
13     public void run()
14     {
15         System.out.println("运行编译器");
16     }
17
18 }

 1 package com.shejimoshi.structural.Bridge;
 2
 3
 4 /**
 5  * 功能:浏览器
 6  * 时间:2016年2月17日下午8:00:09
 7  * 作者:cutter_point
 8  */
 9 public class Browser implements Soft
10 {
11
12     @Override
13     public void run()
14     {
15         System.out.println("运行浏览器");
16     }
17
18 }

 1 package com.shejimoshi.structural.Bridge;
 2
 3
 4 /**
 5  * 功能:测试桥接模式
 6  * 时间:2016年2月17日下午8:06:05
 7  * 作者:cutter_point
 8  */
 9 public class Test
10 {
11     public static void main(String[] args)
12     {
13         //我们的软件
14         Soft browser = new Browser();
15         Soft compiler = new Compiler();
16
17         //我们在window系统上安装浏览器使用
18         Systeml win = new Window();
19         win.installSoft(browser);
20         win.using();
21
22         System.out.println("===============================");
23         //Linux 上安装浏览器还要编译器
24         Systeml ubuntu = new Linux(browser);
25         ubuntu.using();
26         ubuntu.installSoft(compiler);
27         ubuntu.using();
28
29     }
30 }

测试结果:

Window 系统运行:运行浏览器
===============================
Linux 系统运行:运行浏览器
Linux 系统运行:运行编译器

  

转载于:https://www.cnblogs.com/cutter-point/p/5196456.html

【设计模式】7、桥接模式相关推荐

  1. java桥接和装饰_设计模式:桥接模式和装饰模式

    原标题:设计模式:桥接模式和装饰模式 一.桥接模式简介 1.基础描述 桥梁模式是对象的结构模式.又称为柄体(Handle and Body)模式或接口(Interface)模式.桥梁模式的用意是&qu ...

  2. C++设计模式之桥接模式

    这篇文章主要介绍了C++设计模式之桥接模式,本文讲解了什么是桥接模式.为什么要使用桥接模式.什么时候使用桥接模式等内容,需要的朋友可以参考下 问题描述 现在要去画一个图形,图形有长方形.圆形和扇形等等 ...

  3. php设计模式之桥接模式

    php设计模式之桥接模式 一.概述 桥接模式:将两个原本不相关的类结合在一起,然后利用两个类中的方法和属性,输出一份新的结果. 其实就是讲不相关的东西通过类(本例中是SendInfo)结合在一起,从而 ...

  4. java 懒加载模式_JavaScript面试系列:JavaScript设计模式之桥接模式和懒加载

    我写的程序员面试系列文章 Java面试系列-webapp文件夹和WebContent文件夹的区别? 程序员面试系列:Spring MVC能响应HTTP请求的原因? Java程序员面试系列-什么是Jav ...

  5. 详解设计模式:桥接模式

    桥接模式(Bridge Pattern)也称为桥梁模式.接口模式或者柄体模式,有点像适配器模式,也是 GoF 的 23 种设计模式中的一种结构型设计模式. 桥接模式 是用于把抽象化与实现化解耦,使得二 ...

  6. 设计模式之桥接模式详解

    设计模式之桥接模式详解 文章目录 设计模式之桥接模式详解 一.什么是桥接模式 二.桥接模式的应用场景 三.桥接模式的角色组成 四.桥接模式通用写法示例 五.桥接模式优缺点 一.什么是桥接模式 桥接模式 ...

  7. 如何让孩子爱上设计模式 ——10.桥接模式(Bridge Pattern)

    如何让孩子爱上设计模式 --10.桥接模式(Bridge Pattern) 标签: 设计模式初涉 我有故事,你有酒吗?这年头写个技术文不讲个故事都不行,行,我讲: 还有发现很多的技术博文都开始有喜欢往 ...

  8. java 设计模式之桥接模式,策略模式

    java 设计模式之桥接模式,策略模式 1.引出设计模式 相信大家都玩过王者荣耀这款游戏.我们知道现在大概有九十多个英雄且各自技能及背景故事.台词.被动都不一样而且还带着召唤师技能比如实现,惩戒,弱化 ...

  9. 《设计模式》桥接模式

    <设计模式>设计模式的基本原则 <设计模式>单例模式 <设计模式>工厂模式 <设计模式>原型模式 <设计模式>建造者模式 <设计模式& ...

  10. 设计模式之桥接模式(Bridge)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.FactoryMethod(工厂方法模式):2.Abstract Factory(抽象工厂模式):3.Sin ...

最新文章

  1. starUML -- 各种图绘制
  2. java 远程 shell脚本_Java 远程调用 shell脚本
  3. CentOS7开机启动图形界面的开启与关闭
  4. java网络通信:异步非阻塞I/O (NIO)
  5. Python基础语法-Python,Java,C++变量互换值的区别
  6. 用python画数学函数图像教程_Python 绘制你想要的数学函数图形
  7. WPF入门教程系列(一) 创建你的第一个WPF项目
  8. 【前端】【cornerstone】【未完善】cornerstone重新加载图像大小问题——拒绝花里胡哨
  9. 如何用 JavaScript+Canvas 开发一款超级烧脑小游戏?
  10. java 十亿数据去重_如何在有限的内存限制下实现数十亿级手机号码去重
  11. 安装MySQL和出现的问题解决
  12. 【C++】【Opencv】【vs2015】环境配置
  13. ENVI学习总结(十五)——遥感影像分类与应用
  14. Windows下设置Mongodb用户名密码
  15. nodejs实现桌面程序exe
  16. STM32L476入坑-2-STM32CubeMX安装
  17. Windows影子账户创立
  18. 警告: A docBase D:\apache-tomcat-8.5.12\webapps\webapps\projectname inside the host appBase has been
  19. 京东618大促,全店商品如何导出?
  20. android 白色圆点,Android通知图标是一个白色圆圈

热门文章

  1. *【牛客 - 301哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)】小乐乐打游戏(bfs,双元bfs,思维)
  2. 无数种求逆元的方法总结
  3. EasyOcr 安装(linux、docker)、使用(gin、python)
  4. github 上传代码_leetcode爬虫:爬取代码;生成readme;上传github
  5. hdfs如何查找指定目录是否文件_hadoop实战教程-HDFS文件系统如何查看文件对应的block...
  6. 极品飞车ol服务器维护,《极品飞车OL》配件升级常见问题介绍
  7. android 判断空,Android空判断的坑
  8. Maven中maven-source-plugin,maven-javadoc-plugin插件的使用:
  9. C/C++中static的用法全局变量与局部变量
  10. TCP与UDP特点与区别