来源: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设计模式——桥接模式

    一. 定义与类型 定义:将抽象部分与他的具体实现部分分离,使它们都可以独立的变化,通过组合的方式建立两个类之间的联系,而不是继承 类型:结构性. 二. 使用场景 (1) 抽象和具体实现之间增加更多的灵 ...

  5. JAVA 设计模式 桥接模式

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. createElement与createDocumentFragment的点点区别

    在DOM操作里,createElement是创建一个新的节点,createDocumentFragment是创建一个文档片段. 网上可以搜到的大部分都是说使用createDocumentFragmen ...

  2. some simple recursive lisp programs

    1. Write a procedure count-list to count the number of elements in a list (defun count-list (numbers ...

  3. xml文件的生成与解析

    生成方法一:同事StringBuffer类对xml文件格式解析写入 package com.steel_rocky.xml; import android.app.Activity; import a ...

  4. ServiceStack.OrmLite 笔记4 删

    删除 db.DeleteAll(); //各种姿势 db.Delete(p => p.Age == 27);// db.Delete(q => q.Where(p => p.Age ...

  5. Response.Redirect:无法在发送 HTTP 标头之后进行重定向

    URL:http://blog.163.com/asp_neter/blog/static/17510918820107258107558/ 错误出现语句:“Response.Redirect(&qu ...

  6. svn的初级使用

    首先呢 你需要下载一个软件  比如说是 Cornerstone. 进行安装好之后 然后 然后输入账号密码 就可以了 然后去xcode去进行相关的配置 点击第二个进入 偏好设置 点击最下边的+ 点击第二 ...

  7. Maven_3 如何从Maven远程存储库下载

    如果在你的项目中,需要使用到的jar包. 如果使用build path的话,你把你的项目给别人运行的时候,别人还需要去build path,如果要换jar包的版本,这些都是比较麻烦的,所以我们使用ma ...

  8. BN(Batch Normalization)

    Batch Nornalization Question? 1.是什么? 2.有什么用? 3.怎么用? paper:<Batch Normalization: Accelerating Deep ...

  9. Chrome V8引擎的一点认识

    最近在玩弄JavaScript ,也一直在捉摸,脚本Engine怎么解析你写的Code,对Google兴趣浓,索性就看了谷歌的脚本engine的官方资料,都是E文的,但是却是最纯的不是,看下来总结V8 ...

  10. Mac OS 10.12 - 安装JAVA!

    一,下载JDK: 下载地址:版本1.8.0 http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f07 ...