来源:http://www.bjsxt.com/ 
一、【GOF23设计模式】_桥接模式、多层继承结构、银行日志管理、管理系统消息管理、人力资源的奖金计算 

未用桥接模式:

 package com.test.bridge;

 public interface Computer {
     void sale();
 }

 class Desktop implements Computer{
     @Override
     public void sale() {
         System.out.println("销售台式机");
     }
 }
 class Laptop implements Computer{
     @Override
     public void sale() {
         System.out.println("销售笔记本");
     }
 }
 class Pad implements Computer{
     @Override
     public void sale() {
         System.out.println("销售平板电脑");
     }
 }

 class LenovoDesktop extends Desktop{
     @Override
     public void sale(){
         System.out.println("销售联想台式机");
     }
 }
 class LenovoLaptop extends Laptop{
     @Override
     public void sale(){
         System.out.println("销售联想笔记本");
     }
 }
 class LenovoPad extends Pad{
     @Override
     public void sale(){
         System.out.println("销售联想平板电脑");
     }
 }

 class ShenzhouDesktop extends Desktop{
     @Override
     public void sale(){
         System.out.println("销售神舟台式机");
     }
 }
 class ShenzhouLaptop extends Laptop{
     @Override
     public void sale(){
         System.out.println("销售神舟笔记本");
     }
 }
 class ShenzhouPad extends Pad{
     @Override
     public void sale(){
         System.out.println("销售神舟平板电脑");
     }
 }

 class DellDesktop extends Desktop{
     @Override
     public void sale(){
         System.out.println("销售戴尔台式机");
     }
 }
 class DellLaptop extends Laptop{
     @Override
     public void sale(){
         System.out.println("销售戴尔笔记本");
     }
 }
 class DellPad extends Pad{
     @Override
     public void sale(){
         System.out.println("销售戴尔平板电脑");
     }
 }

使用桥接模式:

 package com.test.bridge;
 /**
  * 电脑类型的维度
  */
 public class Computer2 {
     protected Brand brand;

     public Computer2(Brand brand) {
         super();
         this.brand = brand;
     }

     public void sale(){
         brand.sale();
     }
 }

 class Desktop2 extends Computer2{
     public Desktop2(Brand brand) {
         super(brand);
     }
     @Override
     public void sale() {
         super.sale();
         System.out.println("销售台式机");
     }
 }
 class Laptop2 extends Computer2{
     public Laptop2(Brand brand) {
         super(brand);
     }
     @Override
     public void sale() {
         super.sale();
         System.out.println("销售笔记本");
     }
 }
 package com.test.bridge;
 /**
  * 品牌
  */
 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("销售戴尔电脑");
     }
 }
 //新增之前没有的品牌,不用同时新增电脑类型(不用在Computer2中写代码)
 class Shenzhou implements Brand{
     @Override
     public void sale() {
         System.out.println("销售神舟电脑");
     }
 }
 package com.test.bridge;

 public class Client {
     public static void main(String[] args) {
         //销售联想的笔记本电脑
         Computer2 c = new Laptop2(new Lenovo());
         c.sale();

         //销售神舟的笔记本电脑
         Computer2 c2 = new Desktop2(new Shenzhou());
         c2.sale();
     }
 }

【GOF23设计模式】桥接模式的更多相关文章

  1. 转:设计模式-----桥接模式(Bridge Pattern)

    转自:http://www.cnblogs.com/houleixx/archive/2008/02/23/1078877.html 记得看原始链接的评论. 学习设计模式也有一段时间了,今天就把我整理 ...

  2. 跟着ZHONGHuan学习设计模式--桥接模式

    转载请注明出处! ! !http://blog.csdn.net/zhonghuan1992 全部配套代码均在github上:https://github.com/ZHONGHuanGit/Desig ...

  3. linkin大话设计模式--桥接模式

    linkin大话设计模式--桥接模式 桥接模式是一种结构化模式,他主要应对的是:由于实际的需要,某个类具有2个或者2个以上维度的变化,如果只是使用继承将无法实现功能,或者会使得设计变得相当的臃肿.我们 ...

  4. JAVA 设计模式 桥接模式

    用途 桥接模式 (Bridge) 将抽象部分与实现部分分离,使它们都可以独立的变化. 桥接模式是一种结构式模式. 结构

  5. javascript设计模式-桥接模式

    在系统中,某些类由于自身逻辑,具有两个或两个以上维度的变化,如何使得该类型可以沿多个方向变化,但又不引入额外的复杂度,这就是桥接模式要解决的问题. 定义:桥接模式(Bridge),将抽象部分与它的实现 ...

  6. 设计模式 -- 桥接模式(Bridge Pattern)

    桥接模式 Bridge Pattern 结构设计模式 定义: 分离抽象部分和实现部分,使他们独立运行. 避免使用继承导致系统类个数暴增,可以考虑桥接模式. 桥接模式将继承关系转化为关联关系,减少耦合, ...

  7. [Unity 设计模式]桥接模式(BridgePattern)

    1.前言 继上一讲IOC模式的基础上继续本讲桥接模式,笔者感觉桥接模式是23种设计模式中桥接模式是最好用但也是最难理解的设计模式之一,23中设计模式就好武侠剧中一本武功秘籍,我们在工作过程中想要熟练运 ...

  8. 结合JDK源码看设计模式——桥接模式

    前言: 在我们还没学习框架之前,肯定都学过JDBC.百度百科对JDBC是这样介绍的[JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Jav ...

  9. C++设计模式——桥接模式

    问题描述 现在要去画一个图形,图形有长方形.圆形和扇形等等:而图形又可以加上不同的颜色,然后,我们就可以画出红色的长方形,绿色的长方形:红色的圆形,绿色的圆形等等.而这种图形的形状在变化,图形的颜色也 ...

  10. 设计模式—桥接模式的C++实现

    这是Bwar在2009年写的设计模式C++实现,代码均可编译可运行,一直存在自己的电脑里,曾经在团队技术分享中分享过,现搬到线上来. 1. 装饰模式简述 1.1 目的 将抽象部分与它的实现部分分离,使 ...

随机推荐

  1. ORACLE ORA-01157: 无法标识/锁定数据文件

    create undo tablespace MOZI datafile 'E:\oracle\product\10.2.0\oradata\orcl\MOZI.DBF' size 2048M ext ...

  2. MySQL主从同步的延迟原理

    1. MySQL数据库主从同步延迟原理. 答:谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作,主库对所有DDL和DML产生binlo ...

  3. Call me, maybe?

    Hey, I just met you, and this is crazy, but here's my number so call me, maybe? @Test public void te ...

  4. 安卓里面JSON处理和JAVA SE里面的JSON包

    今天编译安卓项目遇到这个问题 com.android.dex.DexException: Multiple dex files define的解决办法 大致意思就是引用了 相同的包 在JAVA SE里 ...

  5. HDFS在Linux下的命令

    1.对hdfs操作的命令格式是 1.1hadoop fs  -ls <path> 表示对hdfs下一级目录的查看 1.2 hadoop fs -lsr <path> 表示对hd ...

  6. Oracle空间查询 ORA-28595

    可使用数据库管理系统 (DBMS) 的结构化查询语言 (SQL).数据类型和表格式来处理地理数据库或安装了 ST_Geometry 类型的数据库中所存储的信息. 例如,在ArcMap中我们使用&quo ...

  7. TP框架自带的正则验证的规则

    thinkphp框架里面自带有很多自动验证的规则,下面是框架自带的正则验证的规则,官方的说明文档里面没有这么多,所以记下来,以备使用. view sourceprint? 01 static $reg ...

  8. SVN和GIT

    一.SVN SVN使用起来还是比较简单的,我使用的SVN小乌龟版本是1.1的.(SVN已经可以正常使用了) 先说下自己了解的SVN流程吧,可能比较简单,不过这个也是实际的使用情况,忽略了很多其他功能( ...

  9. postman+jenkins+newman自动化api接口测试

    一.下载nodejs https://nodejs.org/zh-cn/download/ 二.linux下解压 xz -d node-v8.11.3-linux-x64.tar.xz tar xf ...

  10. webwork框架

    以前都没有用过WebWork这个框架,只是听说过.没想到现在要用,所以就自学了一下.做了个小例子给大家分享下中间遇到的苦难和经验. 准备工作:首先要去下载WebWork框架的开发包.我用的2.2.6版 ...