JAVA开发的23种设计模式之 --- 桥接模式

桥接模式

概述:将抽象部分与他的实现部分分离,这样抽象化与实现化解耦,使他们可以独立的变化.如何实现解耦的呢,就是通过提供抽象化和实现化之间的桥接结构.
    应用场景
        实现系统可能有多个角度分类,每一种角度都可能变化.
    解释:桥接模式将继承模式转化成关联关系,他降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量.
    理解抽象化,实现化,解耦
        抽象化:将复杂物体的一个或几个共同的特性抽出去而只注意其他特性的行动或过程.在java面向对象中抽象化就是将对象的共同性质抽取出去形成类的过程.
        实现化:针对抽象化给出的具体实现,它和抽象化是一个互逆的过程,实现化是对抽象化事物的进一步具体化.
        解耦:解耦是将抽象化和实现化之间的耦合关系解脱开,或者说是将他们之间的强关联改换成弱关联.将两个角色之间的继承关系修改为关联关系.
    优点
        分离抽象接口及其实现部分.提高了比继承更好的解决方案.
        桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原来的系统.
        实现细节对客户不透明,可以隐藏实现细节.
    缺点
        桥接模式的引入会增加系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行编程.

代码实现
     示例:在开发中可能不止使用一种数据库, 例如Mysql,SqlServer数据库等,现在使用桥接模式创建一个连接数据库的驱动,然后对每一个数据库提供各自的实现.对于使用某一个数据库的时候只需要切换一下就行.

类图

数据库接口

package Bridge;
     
    /**
     * Created by looper on 2017/8/16.
     */
    public interface Driver {
      public void connect();
    }

Mysql数据库实现类

package Bridge;
     
    /**
     * Created by looper on 2017/8/16.
     */
    public class MysqlDriver implements Driver {
      @Override
      public void connect() {
        System.out.println("连接Mysql数据库");
      }
    }

SqlServer数据库实现类

package Bridge;
     
    /**
     * Created by looper on 2017/8/16.
     */
    public class SqlServerDriver implements Driver {
      @Override
      public void connect() {
        System.out.println("连接SQLServer数据库");
      }
    }

桥梁类(抽象类)

package Bridge;
     
    /**
     * Created by looper on 2017/8/16.
     */
    public abstract class Bridge {
      private Driver driver;
     
      public void connect(){
        driver.connect();
      }
     
      public void setDriver(Driver driverTemp){
        this.driver = driverTemp;
      }
     
      public Driver getDriver(){
        return this.driver;
      }
    }

桥梁类(实现类)

package Bridge;
     
    /**
     * Created by looper on 2017/8/16.
     */
    public class MyBridge extends Bridge {
     
    }

测试类

package Bridge;
     
    /**
     * Created by looper on 2017/8/16.
     */
    public class BridgeTest {
      public static void main(String[] args) {
        Bridge mysqlBridge = new MyBridge();
     
        Driver mysqlDriver = new MysqlDriver();
        mysqlBridge.setDriver(mysqlDriver);
        mysqlBridge.connect();
     
        Driver sqlServerDriver = new SqlServerDriver();
        mysqlBridge.setDriver(sqlServerDriver);
        mysqlBridge.connect();
     
      }
    }

输出:

我将23种设计模式的全部代码上传到CSDN,有用得到的同学 可以去下载.

下载地址 : 点我
---------------------
作者:叶孤心丶
来源:CSDN
原文:https://blog.csdn.net/yeguxin/article/details/77337838
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/tiancai/p/9908844.html

时间: 2024-08-10 15:09:34

JAVA开发的23种设计模式之 --- 桥接模式的相关文章

23种设计模式之桥接模式代码实例

桥接模式就是把事物与其具体的实现相分离,抽象化与实现化解耦. public interface Sourceable { public void method(); } public class SourceSub1 implements Sourceable { @Override public void method() { System.out.println("this is the first sub!"); } } public class SourceSub2 imple

Java经典23种设计模式之创造型模式(二)

本文记录5种创造型模式的剩下两种:建造者模式(Builder).原型模式(PROTOTYPE). 一.建造者模式(别名:生成者模式) 将复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示.一个完整的建造者模式包含以下几个概念: 1.产品类 Product public class Person { private String head; private String body; private String foot; public String getHead() { ret

Java编程的23种设计模式

设计模式(Design Patterns)                                   --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每

Java经典23种设计模式之创造型模式(一)

设计模式被称为程序猿的内功,之前零零散散的看过一大部分,但自己么有总结过.故此次在这里总结下.值得一提的是,设计模式并不是Java所特有.由于一直搞Android.这里就用Java为载体.最经典的设计模式有23种,分三个大类型: 创建型模式(5) .结构型模式(7).行为型模式(11),5 + 7 +11 = 23.网上一搜也都是一大把了,这里不过个人作的记录.本文记录创造型模式里的工厂方法(Factory Method).抽象工厂(Abstract Factory).单例模式这三种.力求透彻.

浅析Java中的23种设计模式

前言 设计模式不论是在我们学习编程,还是在工作和面试过程中,都会涉及到的一个问题,所以了解和学习好设计模式,是我们每一位码农必须要具备的技能,对以后的发展和自己技能的提升都有好处. 什么是设计模式(Design Patterns)?          设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验的总结. 为什么使用设计模式?         使用设计模式是为了重用代码.让代码更容易被他人理解.保证代码可靠性. 设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共

23种设计模式(6)--Bridge模式

面向对象的设计原则:高内聚.低耦合 软件重构原则:小步快跑------抽取的思想(抽取函数.抽取类.抽取接口):对扩展开放.对修改封闭 设计模式分类如下: Bridge模式主要是解决多维度问题,什么意思呢?类似于n*m这个公式,n种抽象的接口,m种具体的实现,最多可以有n*m种组合方式. 下面这篇文章对Bridge模式讲解的通俗易懂,于是转了过来. 学习设计模式也有一段时间了,今天就把我整理的一篇课程和大家分享,有不妥之处欢迎指出. 生活中的一个例子: 就拿汽车在路上行驶的来说.即有小汽车又有公

【Unity与23种设计模式】解释器模式(Interpreter)

GoF中定义: "定义一个程序设计语言所需要的语句,并提供解释来解析(执行)该语言." 传统上,执行程序代码通常通过两种方式 第一种:编译程序 第二种:解释器 常见的使用解释器的程序设计语言 包含流行与网页设计领域中的脚本语言 如JavaScript.PHP.Ruby等 这些程序代码经过一般文本编辑器编写完成后放入指定的位置 就可以由应用程序中的解释器直接执行 包括Lua Unity中 编写好的脚本程序执行之前会被UnityEngine编译过 严格来说不算是解释器模式 但与十几年前的开

23种设计模式(19)---Command模式

命令(Command)模式属于对象的行为模式[GOF95].命令模式又称为行动(Action)模式或交易(Transaction)模式.命令模式把一个请求或者操作封装到一个对象中.命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能. 命令模式是对命令的封装.命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象. 每一个命令都是一个操作:请求的一方发出请求要求执行一个操作:接收的一方收到请求,并执行操作.命令模式允许请求的一方和接收的

23种设计模式-----创建型模式、结构型模式

一.创建型模式(都是用来帮助创建对象的) 1.单例模式 作用:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 应用:Windows的任务管理器.回收站:项目中读取配置文件的类:网站的计数器:应用程序的日志应用:数据库连接池:操作系统的文件系统:Application:Spring中的bean:Servlet:spring MVC框架/struts1框架中的控制器对象 选用:占用资源小.不需要延时加载--------枚举-->饿汉           占用资源大 .需要延时    --