`

桥梁设计模式

阅读更多
如果有很多对象要处理,而又有很多操作要做。这时可以考虑使用桥梁的设计模式,将对象与操作相互分离,都做抽象,然后分别由实现类进行组合。完成所需要的要求。
下面的实例引用自
http://wenku.baidu.com/view/2911fc4f2e3f5727a5e9622e.html
现在我们有很多表要处理,同时又有很多操作要做。最简单的做法是在一个类里做完所有的操作,如我们在EJB服务器端的实现中进行JDBC操作。可是这样一来这个类将无比巨大,大到四只眼(眼睛兄)都看不过来!有什么好办法能够降低这样操作的杂乱性呢?我们注意到这里有两个概念,分别是“表单(Table)”和“操作(Operator)”。也就是说这里有两个部分——“抽象”和“实现”。我们将这两个部分进行分离,然后根据需要,分别继承和实现表单和操作。这样我们就可以方便地通过表单和操作的组合来实现我们的工作了。

操作如:
java 代码
 
Table tbl1 = new Table1(new Insert());  
tbl1.work();  
  
Table tbl2 = new Table2(new Update());  
tbl2.work();  
Table1和Table2都是Table的子类,他们都映射到数据库中特定的表。Insert和Update都是接口Operator的实现,分别完成特定的数据库操作。好了,下面来先看看Operator的实现代码。
java 代码
 
public interface Operator {  
    /** 
     * 操作 
     *  
     * @param arg 传入的参数 
     * @return 操作结果 
     */  
    String work(String arg);  
}  
我们需要能对数据库进行插入和修改操作,因此分别建立Insert和Update类。
java 代码
 
// 插入操作  
public class Insert implements Operator {  
  
    public String work(String arg) {  
        String rs = "insert " + arg;  
        return rs;  
    }  
  
}  

java 代码
 
// 修改操作  
public class Update implements Operator {  
  
    public String work(String arg) {  
        String rs = "update " + arg;  
        return rs;  
    }  
  
}  
好了,我们再来看看抽象部分的实现。这里我们的对象是Table。
java 代码
 
public abstract class Table {  
    // 内置一个操作接口  
    protected Operator impl = null;  
  
    public Table(Operator impl) {  
        this.impl = impl;  
    }  
  
    /** 
     * 由子类来具体实现此操作 
     */  
    public abstract void work();  
  
}  
现在我们有两个表单需要进行操作,他们分别是Table1和Table2。
java 代码
 
public class Table1 extends Table {  
  
    public Table1(Operator impl) {  
        super(impl);  
    }  
 
    public void work() {  
        System.out.println(this.impl.work("Table1"));  
    }  
  
}  

java 代码
 
public class Table2 extends Table {  
  
    public Table2(Operator impl) {  
        super(impl);  
    }  
  
    public void work() {  
        System.out.println(this.impl.work("Table2"));  
    }  
  
}  
这样我们在进行数据库的操作的时候,便可以随意地根据实际情况进行表单与操作的组合,将表单与操作桥接在一起来完成我们的任务。
java 代码
 
// 对table1进行插入操作  
Table tbl1 = new Table1(new Insert());  
tbl1.work();  
  
// 对table2进行修改操作  
Table tbl2 = new Table2(new Update());  
tbl2.work();  
Bridge设计模式感觉上是通过将对象与操作进行分离,然后对这两个基本概念进行继承及实现,通过对对象及操作的各种组合来完成相应的工作。
分享到:
评论

相关推荐

    设计模式之桥梁模式

    桥梁模式你值得拥有,简单实用易上手,不能错过的实例。

    设计模式之桥梁模式实现

    设计模式之桥梁模式的Java版本实现和UML类图

    设计模式C++学习之桥梁模式(Bridge)

    设计模式C++学习之桥梁模式(Bridge)

    bridge-example:马尔马拉大学 OOP 课堂作业 - 桥梁设计模式示例

    桥接示例马尔马拉大学 OOP 课堂作业 - 桥梁设计模式示例

    C#设计模式.PDF

    完整的C#设计模式PDF版 C#设计模式(1) 4 一、 C# 面向对象程序设计复习 5 二、 设计模式举例 5 三、 先有鸡还是先有蛋? 7 四、 大瓶子套小瓶子还是小瓶子套大瓶子? 8 五、 .net本质 9 C#设计模式(2) 11 一、 ...

    小D深入浅出设计模式+框架源码剖析实战

    ├─第一章 旭瑶-小滴架构师成长系列软件设计模式课程介绍 │ 1.2设计模式全家桶课程大纲速览.mp4 │  ├─第二章 想成为架构师的你,不可不知道的...│ 6.1-接口之间的桥梁-适配器设计模式你知道多少.mp4 │ 6.4

    设计模式实例 装饰 工厂 桥梁 观察者

    设计模式实例,java语言开发。 包括:工厂模式,观察者模式,装饰模式和桥梁模式。

    java设计模式

    目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式

    基于设计模式的画图程序

    该系统是一个画图程序,我们要用设计模式的思想来设计系统结构,然后实现基本图形的绘制功能。 1.1 设计模式要求 至少在其中运用 3 种模式,其中涉及到的模式有装饰模式、策略模式、桥梁模式三种。 1.2 画图基本要求...

    设计模式课程设计- 画 图 程 序.doc

    该系统是一个画图程序,我们要用设计模式的思想来设计系统结构,然后实现基本图形的绘制功能。 1.1 设计模式要求 至少在其中运用 6 种模式,其中涉及到的模式有装饰模式、策略模式、桥梁模式三种。 1.2 画图基本要求...

    深入浅出设计模式

    深入浅出设计模式,比head first更易懂,共讲解了22种设计模式: 工厂模式 单例模式 建造模式 原型模式 适配器模式 桥梁模式 组合模式 装饰模式 门面模式 享元模式 代理模式 责任链模式 命令模式 解析器模式 迭代器...

    C#设计模式大全

    C#设计模式(1) 一、 C# 面向对象程序设计复习 二、 设计模式举例 三、 先有鸡还是先有蛋? 四、 大瓶子套小瓶子还是小瓶子套大瓶子? 五、 .net本质 C#设计模式(2) 一、 "开放-封闭"原则(OCP) 二、 ...

    深入浅出java设计模式(高清中文PDF)

    文件类型为PDF文件,此文档对20多种java设计模式进行了详细讲解,在中文讲解的过程中还附有代码示例给学习者进行参考,使学习者通过实践更容易理解设计模式的原理。 本文档目录: 1.工厂模式 2.单例模式 3.建造...

    JavaScript设计模式–桥梁模式引入操作实例分析

    本文实例讲述了JavaScript设计模式–桥梁模式引入操作。分享给大家供大家参考,具体如下: 1.使用情况 (1)事件的监控 #1,利用页面的button来选择宠物的例子(思路) button.addEvent(element,"click",...

    学习php设计模式 php实现桥梁模式(bridge)

    主要介绍了php设计模式中的桥梁模式,使用php实现桥梁模式,感兴趣的小伙伴们可以参考一下

    java 设计模式(列如:单列,工厂,桥梁,===)

    java设计模式 设计模式(列如:单列,工厂,桥梁,===)

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    11、桥梁模式BRIDGE PATTERN 12、命令模式COMMAND PATTERN 13、装饰模式DECORATOR PATTERN 14、迭代器模式ITERATOR PATTERN 15、组合模式COMPOSITE PATTERN 16、观察者模式OBSERVER PATTERN 17、责任链模式 18、...

    C#23种设计模式_示例源代码及PDF

    桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关 桥梁模式 联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是 继承关系,从而使两者可以独立的...

Global site tag (gtag.js) - Google Analytics