桥接模式

桥接模式就是把影响事物对象的多个因素抽象出来从而使两者解偶,那么就能动态的加载变化的因素。

好吧,这个定义很抽象,我们还是来聊下具体的事物。

最近我们实验室因为一系列的设计模式改进,所以竞争力和盈利都有了长足的发展,所以老总们就计划着冲出亚洲,走向全球了。但是我们以前生产的男人女人都是黑发黄肤的东方系列产品,现在要打入欧美市场,我们就必须要生产金发白肤的西方系列产品,所以我们就定制了各自的产品模板:

class Ren {
}class NanRen extends Ren {public String gender  = "男";public String hair  = "";public String skin  = "";
}class NvRen extends Ren {public String gender  = "女";
}class DongFangNanRen extends NanRen {public String hair  = "黑色";public String skin  = "黄肤";public void build() {System.out.println("性别:" + gender + ", 特征:" + hair + ", " + skin);}
}
class XiFangNanRen extends NanRen {public String hair  = "金色";public String skin  = "白肤";public void build() {System.out.println("性别:" + gender + ", 特征:" + hair + ", " + skin);}
}
class DongFangNvRen extends NvRen {public String hair  = "黑色";public String skin  = "黄肤";public void build() {System.out.println("性别:" + gender + ", 特征:" + hair + ", " + skin);}
}
class XiFangNvRen extends NvRen {public String hair  = "金色";public String skin  = "白肤";public void build() {System.out.println("性别:" + gender + ", 特征:" + hair + ", " + skin);}
}public class Bridge {public static void main(String[] args) {new XiFangNvRen().build();new DongFangNvRen().build();new XiFangNanRen().build();new DongFangNanRen().build();}
}

这时人妖工厂的厂长说人妖也要打入欧美市场,正常人工厂的厂长说我们不仅仅要打入欧美市场,还得打入非洲和印度市场。

我们的模具制造哥一听立马晕倒,倒地前大吼一句,要3X4个模具让哥加班加死吧。

就在这时,我们的资深顾问提出了一种解决方案来解救模具制造哥:

既然我们的"人"产品需要一些头发和皮肤的"特征",而头发和皮肤的特征会不时的改变,我们何不将"人"和"特征"分离开来,"人"只需要知道自己要有一些"特征",至于"特征"是什么样的,到用户使用的时候用户给"人"赋予自己所需要的"特征"就行。

class Ren {TeZhen tz;public void setTeZhen(TeZhen tz) {this.tz = tz;}
}class NanRen extends Ren {public String gender  = "男";public void build() {System.out.println("性别:" + gender + ", 特征:" + tz.getHair() + ", " + tz.getSkin());}
}class NvRen extends Ren {public String gender  = "女";public void build() {System.out.println("性别:" + gender + ", 特征:" + tz.getHair() + ", " + tz.getSkin());}
}interface TeZhen {public abstract String getHair();public abstract String getSkin();
}class DongFangTeZhen implements TeZhen {@Overridepublic String getHair() {return "黑色";}@Overridepublic String getSkin() {return "黄肤";}}class XiFangTeZhen implements TeZhen {@Overridepublic String getHair() {return "金色";}@Overridepublic String getSkin() {return "白肤";}}public class Bridge {public static void main(String[] args) {NvRen nvren = new NvRen(); //创建一个女人
        TeZhen df = new DongFangTeZhen();// 生产一个东方特征nvren.setTeZhen(df); // 将东方特征赋予一个女人nvren.build(); // 这就是我们需要的东方女人
        TeZhen xf = new XiFangTeZhen();nvren.setTeZhen(xf);//我们还可以给同一个人换上西方特征来满足我们一些特殊的需求
        nvren.build();}
}

这样设计就解决了我们模具制造哥的问题,不过也让我们的模具制造哥失业了,因为进入非洲及印度市场的时候,我们只需要加上两种特征就行了。

class FezhouTeZhen implements TeZhen {@Overridepublic String getHair() {return "黑色";}@Overridepublic String getSkin() {return "黑肤";}}class YingDuTeZhen implements TeZhen {@Overridepublic String getHair() {return "黑色";}@Overridepublic String getSkin() {return "棕肤";}}

现在全球都是我们的市场,并且很多人买了一个"人"和多个"特征"来满足不同时间段的需要。

转载于:https://www.cnblogs.com/biglaojiang/archive/2013/05/15/3079742.html

设计模式笔记之七 (桥接模式)相关推荐

  1. python的编程模式-实例解析Python设计模式编程之桥接模式的运用

    这篇文章主要介绍了Python设计模式编程之桥接模式的运用,桥接模式主张把抽象部分与它的实现部分分离,需要的朋友可以参考下 我们先来看一个例子: #encoding=utf-8 # #by panda ...

  2. 简易理解设计模式之:桥接模式——穿衣服经典案例2

    介绍: 桥接模式属于结构型模式.它的定义为:将抽象部分与实现部分分离,使它们都可以独立的变化. 类图: Abstraction(抽象化角色):抽象部分,保持对实现部分对象的引用,抽象部分中的方法需要调 ...

  3. 大话设计模式读书笔记之桥接模式

    1.定义: 将抽象部分与它的实现部分分离,使它们都可以独立地变化. 需要理解,什么叫抽象与它的实现分离,并不是说,让抽象类与其派生类分离,因为这没任何意义.实现指的是抽象类和它的派生类用来实现自己的对 ...

  4. 《Java设计模式》之桥接模式

    Bridge模式的概念 Bridge 模式是构造型的设计模式之中的一个.Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任.它的主要特点是把抽象(abst ...

  5. JAVA设计模式初探之桥接模式

    生活中的一个例子:    拿汽车在路上行驶的来说.既有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶.这你会发现,对于交通工具(汽车)有不同的类型,它们所行驶的环境(路)也 ...

  6. Net设计模式实例之桥接模式( Bridge Pattern)(4)

    3.客户端代码<?XML:NAMESPACE PREFIX = O /> static void <?XML:NAMESPACE PREFIX = ST2 />Main(str ...

  7. 从王者荣耀看设计模式(十七.桥接模式)

    从王者荣耀看设计模式(桥接模式) 一.简介 王者荣耀是一款RGB游戏,玩家操控自己选择的英雄进行竞赛.在游戏正式开始前,玩家在挑选想要操作的英雄的同时,也会挑选适合该英雄的召唤师技能.召唤师技能是通用 ...

  8. java设计模式 桥接_Java设计模式百例 - 桥接模式

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

  9. 【设计模式自习室】桥接模式 Bridge Pattern:处理多维度变化

    前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该模式的介绍,包括: 引子.意图(大白话解释) 类图.时序图(理论规范) 该模式的代码示例:熟悉该模 ...

最新文章

  1. Codechef REBXOR[dp+字典树]
  2. Linux系统的中断、系统调用和调度概述【转】
  3. if判断用户名 linux,linux shell 之if-------用if做判断
  4. docker4dotnet #2 容器化主机
  5. java进阶之注解篇
  6. php 转换数组为小写,PHP如何将数组键转换为小写?
  7. python爬虫数据可视化软件_python爬虫及数据可视化分析
  8. 零基础mysql项目实例_MySQL-零基础开发
  9. 酱茄企业官网多端开源小程序源码 v1.0.0
  10. 算法分析 - 学习笔记
  11. Linux下如何查找nginx配置文件的位置
  12. 把CAS部署远程服务器上,在本地client访问CAS会出现无法统一注销的问题
  13. 草料二维码 批量生成二维码
  14. 组建局域网_组网方案图文教程,双路由器有线搭建网络,公司家庭组建局域网...
  15. [docker]九、compose是什么?有什么用?以及用compose启动web、redis和wordpress
  16. cad刷新快捷键_CAD快捷键大全清单,送给每一位CAD初学者,非常实用的干货
  17. PHP+TP框架实现微信公众号开发之发送模板消息
  18. UEFI启动+GPT分区模式下双硬盘SSD+HDD+Win10安装Ubuntu18.04.1组成双系统
  19. 单片机中断系统(部分以AT89S52为例)
  20. 【微机原理与接口技术】实验5 可编程并行接口(8255)

热门文章

  1. uC/OS II--与ECB操作相关的四个函数
  2. 通过标题区别自己的发帖
  3. 为什么在mysql执行删除表中外键的语句,外键却仍然存在? [问题点数:40分]
  4. Leetcode题库 145.二叉树的后序遍历(递归 C实现)
  5. x86汇编-1(第三章—第四章)虚拟硬盘基本信息,虚拟硬盘的写入,bochs调试
  6. tacacs java客户端_思科交换机 ACS4.0 Tacacs+ 登陆验证
  7. matlab 不单调 插值,三组无关数据进行MATLAB画三维图不采用插值的方法该怎么办...
  8. stop() 和 suspend() 方法为何不推荐使用
  9. linux egrep新添的正则表达式元字符
  10. PHP传引用/作用域 问题