桥接模式:

   分离抽象与具体实现,让他们可以独自发展,防止类爆炸

 场景:

   过年走亲戚是我们中国人传统的习俗,走亲戚那就少不了要买东西(苹果,牛奶等等),这些具体的东西就是具体的类

   蒙牛牛奶,有机苹果,有机,蒙牛这些就是抽象,东西各种各样,随着制造业以及人类的智慧这些抽象也在不断发展

   将这些抽象与具体的类通过一个桥梁连接起来就是桥接模式。

问题:我走丈母娘家想送一些有机苹果,该怎么实现呢,请看代码
1、抽象东西类
package com.srr.pd.bridge;

/**
* 东西,抽象类
*/
abstract public class Thing {
Bridge bridge;
}

2、蒙牛

package com.srr.pd.bridge;

/**
* 蒙牛
*/
public class Mengniu extends Thing{
public Mengniu(Bridge bridge){
this.bridge = bridge;
} @Override
public String toString() {
return "Mengniu{} " + this.bridge.toString();
}
}

3、有机

package com.srr.pd.bridge;

/**
* 有机的
*/
public class Organic extends Thing{
public Organic(Bridge bridge){
this.bridge = bridge;
} @Override
public String toString() {
return "Organic{} " + this.bridge.toString();
}
}

4、桥接类

package com.srr.pd.bridge;

/**
* 桥接
*/
public class Bridge {
@Override
public String toString() {
return "Bridge{}";
}
}

5、苹果

package com.srr.pd.bridge;

/**
* 苹果
*/
public class Apple extends Bridge{
@Override
public String toString() {
return "Apple{}";
}
}

6、牛奶

package com.srr.pd.bridge;

/**
* 牛奶
*/
public class Milk extends Bridge{
@Override
public String toString() {
return "Milk{}";
}
}

7、测试类

package com.srr.pd.bridge;

public class T {

    /**
* 走亲戚
*/
private static void WalkRelatives(){
Thing thing = new Organic(new Apple()); //有机苹果
//给东西
give(new MotherOfWife(),thing);
} /**
* 给东西
* @param m
* @param thing
*/
private static void give(MotherOfWife m, Thing thing) {
m.get(thing);
} static class MotherOfWife {
/**
* 收到
*/
public void get(Thing thing){
System.out.println(thing.toString() +" geted");
}
} public static void main(String[] args) {
WalkRelatives();
}
}

JAVA设计模式之桥接模式(bridge)的更多相关文章

  1. 乐在其中设计模式(C#) - 桥接模式(Bridge Pattern)

    原文:乐在其中设计模式(C#) - 桥接模式(Bridge Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 桥接模式(Bridge Pattern) 作者:webabcd 介绍 ...

  2. java设计模式7——桥接模式

    java设计模式7--桥接模式 1.桥接模式介绍 桥接模式是将抽象部分与它的实现部分分离,使他们都可以独立的变化.它是一种对象结构型模式,又称为柄体模式或接口模式. 2.解决问题 2.1.将复杂的组合 ...

  3. python 设计模式之桥接模式 Bridge Pattern

    #写在前面 前面写了那么设计模式了,有没有觉得有些模式之间很类似,甚至感觉作用重叠了,模式并不是完全隔离和独立的,有的模式内部其实用到了其他模式的技术,但是又有自己的创新点,如果一味地认为每个模式都是 ...

  4. 【设计模式】桥接模式 Bridge Pattern

    开篇还是引用吕振宇老师的那篇经典的文章<设计模式随笔-蜡笔与毛笔的故事>.这个真是太经典了,没有比这个例子能更好的阐明桥接模式了,这里我就直接盗来用了. 现在市面上卖的蜡笔很多,各种型号, ...

  5. 二十四种设计模式:桥接模式(Bridge Pattern)

    桥接模式(Bridge Pattern) 介绍将抽象部分与它的实现部分分离,使它们都可以独立地变化. 示例有一个Message实体类,对它的操作有Insert()和Get()方法,现在使这些操作的抽象 ...

  6. [设计模式] 7 桥接模式 bridge

    #include<iostream> using namespace std; class AbstractionImp { public: virtual ~AbstractionImp ...

  7. java设计模式之桥接模式

    桥接模式 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化.这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦.这种模式涉及到一个作为桥接的 ...

  8. Java设计模式应用——桥接模式

    性能管理系统中,数据产生后需要经过采集,汇聚,入库三个流程,用户才能查询使用. 采集可以是snmp采集,也可以是ems采集:汇聚可以使storm汇聚,也可以是spark汇聚:入库可以是hdfs入库,也 ...

  9. java设计模式之-----桥接模式

    一.概念定义 将抽象部分和实现部分分离,使他们都可以独立的变化.(这句话有点抽象啊..) 在软件系统中,某种类型由于自身逻辑,具有多个维度的变化,如何利用面向对象的技术来使得该类型沿着多方向变化,而又 ...

随机推荐

  1. Codeup 25593 Problem G 例题5-7 求圆周率pi的近似值

    题目描述 用如下公式 4*Π = 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13 - 1/15 - 求圆周率PI的近似值,直到发现某一项的绝对值小于10-6为止(该项不 ...

  2. lambda表达式,及lambda简化过程

    lambda表达式(jdk8特性) 1.为什么要用lambda表达式 原因:因为我们有时候需要用到很多类,但是,这些类我们只用一次或者两次,所以我们用匿名内部类,但是匿名内部类多了还是很麻烦,所以用l ...

  3. 嘿嘿,我就知道面试官接下来要问我 ConcurrentHashMap 底层原理了,看我怎么秀他

    前言 上篇文章介绍了 HashMap 源码后,在博客平台广受好评,让本来己经不打算更新这个系列的我,仿佛被打了一顿鸡血.真的,被读者认可的感觉,就是这么奇妙. 然后,有读者希望我能出一版 Concur ...

  4. 【selenium】各种exception

    selenium中的Exception解释 exception selenium.common.exceptions.ElementClickInterceptedException(msg=None ...

  5. 开源软件SoftEther使用

    最近在寻找比较好用的开源VPN,感觉SoftEther很符合我的需求.一方面是SoftEther属于开源软件并且一直在更新,另一方面是功能强大,好用. VPN支持路由功能和NAT功能,还支持多种类型的 ...

  6. Liunx常用操作(二)-vim中删除命令

    VIM简介 Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.VIM是自由软件.Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Ema ...

  7. javascript-如何获取标签的内容

    <input>标签的: document.getElementById("id").value ; 其他文本标签的: document.getElementById(& ...

  8. Spring5参考指南: BeanWrapper和PropertyEditor

    文章目录 BeanWrapper PropertyEditor BeanWrapper 通常来说一个Bean包含一个默认的无参构造函数,和属性的get,set方法. org.springframewo ...

  9. Scala教程之:Future和Promise

    文章目录 定义返回Future的方法 阻塞方式获取Future的值 非阻塞方式获取Future的值 Future链 flatmap VS map Future.sequence() VS Future ...

  10. GitHub 被指审查内容,著名“换脸”开源项目 deepfake 遭限制访问

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   昨天 Hacker News 上一条关于 deepfake 开源项目的帖子(https://news.ycombi ...