桥接模式定义为:将抽象部分与它的实现部分分离,使它们都可以独立的变化。

第一次看设计模式的时候,不是很清楚这句话的意思,随着笔者的不断开发,发现有一种场景,

继承关系多了,不易于维护父类,而笔者认为桥接模式的出现很好的解决了这个问题。用聚合解决继承的父类难维护性。先看下桥接模式设计图。

大话设计模式-类图

以上类图很简单易懂,先看下笔者的demo

/**
* 操作接口
*/
public interface IOperate { public void operate();
}
/**
* 品牌父类
*/
public class Brand { private IOperate operate; public Brand(IOperate operate) {
super();
this.operate = operate;
} public void operate() {
operate.operate();
} public IOperate getOperate() {
return operate;
} public void setOperate(IOperate operate) {
this.operate = operate;
}
}
/**
* 玩游戏
*/
public class Game implements IOperate{
@Override
public void operate() {
System.out.println("玩游戏");
} }
/**
* 看通讯录
*/
public class MailList implements IOperate {
@Override
public void operate() {
System.out.println("看通讯录");
} }
/**
* M品牌
*/
public class MBrand extends Brand{ public MBrand(IOperate operate) {
super(operate);
} }
/**
* N品牌
*/
public class NBrand extends Brand{ public NBrand(IOperate operate) {
super(operate);
} }
/**
* 客户端
*/
public class Test {
public static void main(String[] args) {
IOperate game = new Game();
IOperate mailList = new MailList(); Brand nBrand = new NBrand(game);
nBrand.operate(); nBrand = new NBrand(mailList);
nBrand.operate(); Brand mBrand = new MBrand(game);
mBrand.operate(); mBrand = new MBrand(mailList);
mBrand.operate();
}
}

运行结果如下

玩游戏
看通讯录
玩游戏
看通讯录

比较好理解,不过笔者认为我们在实际开发中,可能很多地方会用到桥接模式,只是大家都忘记这个模式,而用继承去实现。

还是那句老话,理解其核心思想,拒绝生搬硬套。希望能帮助学习桥接模式的小伙伴。

java 之 桥接模式(大话设计模式)的更多相关文章

  1. java 之 适配器模式(大话设计模式)

    适配器模式,笔者不是很推荐在项目初期阶段使用,在笔者看来这个设计模式就是套接了一层,从而达到能够迎合现有的外部接口规范. 先来简单的看下类图: 大话设计模式-类图 这个模式理解起来非常简单,A→B因为 ...

  2. java 之 单例模式(大话设计模式)

    笔者记得去面试时曾被问起这个模式,当时还没有看过设计模式,对设计模式基本上一无所知,不过可以肯定的是笔者用过单例模式.当时回答的风马牛不相及,很尴尬. 也是从那时起,开始学习设计模式.今天所说的就是单 ...

  3. Bridge桥接模式(设计模式11)

    在没有使用桥接模式: 扩展新问题(类归属膨胀问题) 1增加性的电脑类型,要增加每个品牌下面的类 2如果要增加一个新的电脑品牌,要增加美中电脑类型的类 违背单一职责原则: · 一个类:联想笔记本,有两个 ...

  4. (转)JAVA之桥接模式

    原文地址:http://blog.sina.com.cn/s/blog_4080505a0101dzib.html 桥模式:将某个问题抽象的不同形式分别与该问题的具体实现部分相分离,使他们都可以独立变 ...

  5. java的桥接模式

    http://blog.csdn.net/jason0539/article/details/22568865 http://www.cnblogs.com/V1haoge/p/6497919.htm ...

  6. java 之 代理模式(大话设计模式)

    java代理模式顾名思义,就类似于大学,我想和冰可乐,可是我又在玩游戏,于是我让我的室友帮我把可乐带回来,简单的来说我的室友就是代理,而买可乐就是需要做的行为.这是笔者理解的代理模式 大话设计模式-类 ...

  7. Java 设计模式系列(七)桥接模式

    Java 设计模式系列(七)桥接模式 桥接模式(Bridge)是一种结构型设计模式.Bridge 模式基于类的最小设计原则,通过使用封装.聚合及继承等行为让不同的类承担不同的职责.它的主要特点是把抽象 ...

  8. Java设计模式13:常用设计模式之桥接模式(结构型模式)

    1. Java之桥接模式(Bridge Pattern) (1)概述: 首先我们说一个生活中的例子:       就拿汽车在路上行驶的来说.即有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也 ...

  9. C++设计模式-Bridge桥接模式

    作用:将抽象部份与它的实现部份分离,使它们都可以独立地变化. 将抽象(Abstraction)与实现(Implementation)分离,使得二者可以独立地变化. 桥接模式号称设计模式中最难理解的模式 ...

随机推荐

  1. Problem M

    Problem Description Accounting for Computer Machinists (ACM) has sufferred from the Y2K bug and lost ...

  2. Handshakes

    Description Last week, n students participated in the annual programming contest of Marjar Universit ...

  3. NFS存储服务部署

    第1章 NFS介绍 1.1 NFS服务内容的概述 □ RPC服务知识概念介绍说明,以及RPC服务存在价值(必须理解掌握) □ NFS服务工作原理讲解(必须理解掌握) □ NFS共享文件系统使用原理讲解 ...

  4. ssh分发秘钥时出现错误“Permission denied (publickey,gssapi-keyex,gssapi-with-mic)”

    因为公司的服务器连接是通过xshell公钥和密码连接的,今天在ssh分发秘钥的时候出现了,下面的错误: [root@iZ2ze97cumk8opqm28h8Z .ssh]# ssh-copy-id - ...

  5. !DOCTYPE 文档类型声明

      1.用途 Web 世界中存在许多不同的文档.只有了解文档的类型,浏览器才能正确地显示文档.HTML 也有多个不同的版本,只有完全明白页面中使用的确切 HTML 版本,浏览器才能完全正确地显示出 H ...

  6. 在游览器上可以连网,Ionic打包后不能连接网络

    在游览器上可以连网,Ionic打包后不能连接网络.可能是没有安装cordova-plugin-whitelist插件.  解决方案:

  7. Flex布局(引用阮一峰大神)

    Flex 布局教程:语法篇 http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html Flex 布局教程:实例篇 http://www.ruan ...

  8. pandas选择数据-【老鱼学pandas】

    选择列 根据列名来选择某列的数据 import pandas as pd import numpy as np dates = pd.date_range("2017-01-08" ...

  9. SAXParserFactory

    Defines a factory API that enables applications to configure and obtain a SAX based parser to parse ...

  10. invalid LOC header

    今天在SSM整合的时候,报错Failed to start component [StandardEngine[Catalina].StandardHost[localhost].但是就是不明白原因所 ...