一、概述

1.桥接模式的应用情况:(1)两个维度扩展(2)排列组合

二、代码

1.Gift.java

 public class Gift {

     protected GiftImpl giftImpl;
}

2.GiftImpl.java

 public class GiftImpl {

 }

3.WarmGift.java

 public class WarmGift extends Gift {

     public WarmGift(GiftImpl giftImpl) {
//调用父类的giftImpl
this.giftImpl = giftImpl;
} @Override
public String toString() {
return this.getClass().getName()+"-----"+giftImpl.getClass().getName();
}
}

4.WildGift.java

 public class WildGift extends Gift {

     public WildGift(GiftImpl giftImpl) {
//调用父类的giftImpl
this.giftImpl = giftImpl;
} @Override
public String toString() {
return this.getClass().getName()+"-----"+giftImpl.getClass().getName();
}
}

5.Flower.java

 public class Flower  extends GiftImpl {

 }

6.Ring.java

 public class Ring extends GiftImpl {

 }

7.MM.java

 public class MM {

     private String name;

     public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} }

8.Boy.java

 public class Boy {

     private String name;

     public void pursue(MM mm){
Gift gift = new WildGift(new Flower());
give(gift, mm);
System.out.println(gift);
} public void give(Gift gift, MM mm) { }
}

9.Test.java

 public class Test {

     @org.junit.Test
public void test() {
Boy b = new Boy();
b.pursue(new MM());
} }

三、运行结果

Java-马士兵设计模式学习笔记-桥接模式的更多相关文章

  1. Java-马士兵设计模式学习笔记-命令模式

    一.概述 命令模式 二.代码 1.Client.java public class Client { public void request(Server server){ server.addCom ...

  2. Java-马士兵设计模式学习笔记-工厂模式-抽象工厂模式

    一.概述 1.抽象工厂:当情况是需要产生一系列产品,若需更换产品,则要求一系列产品一起换,且要控制一系列产品的产生过程,此时可考虑抽象工厂模式.例:小明装修屋子,把电视.冰箱都替换掉,他这次需要把电视 ...

  3. Java-马士兵设计模式学习笔记-工厂模式-简单工厂

    一.概述 1.目标:要控制任意类型交通工具的生产模式 2.目标有两层意思(1)任意类型 (2)生产模式,所以对应的,要这两个层面上抽象(Movable,VehicleFactory),利用接口,实现多 ...

  4. Java-马士兵设计模式学习笔记-策略模式-模拟 Comparator接口

    续上一篇  <Java 模拟 Comparable接口> 一.Teacher类及Student类的比较大小方式是不固定的,比如老师除了比较职称外,还可比较工龄大小,年龄大小等.则定义Com ...

  5. Java-马士兵设计模式学习笔记-迭代器模式-模仿Collectin ArrayList LinckedList

    Java Iterator模式 Java Iterator模式, 模仿Collectin ArrayList LinckedList 一.有如下几个类 1.接口Collection.java 2.接口 ...

  6. Java-马士兵设计模式学习笔记-代理模式-聚合与继承方式比较

    一.概述 1.目标:要在Tank的move()方法做时间代理及日志代理(可以设想以后还要增加很多代理处理),且代理间的顺序可活更换 2.思路: (1)聚合:代理类聚合了被代理类,且代理类及被代理类都实 ...

  7. Java-马士兵设计模式学习笔记-代理模式-动态代理 调用Proxy.newProxyInstance()

    一.概述 1.目标:不自己写代理类,利用Proxy.newProxyInstance()动态生成 2.用到的知识点: (1)//编译源码,生成class,注意编译环境要换成jdk才有compiler, ...

  8. Java-马士兵设计模式学习笔记-建造者模式

    一.概述 二.代码 1.Animal.java public interface Animal { public void bark(); } 2.Dog.java public class Dog ...

  9. Java-马士兵设计模式学习笔记-代理模式-动态代理 修改成可以任意修改代理逻辑

    一.概述 1.目标:动态代理的代理逻辑可以任意修改 2.思路: (1)要把代理逻辑抽离,站在jvm的角度思考,应独立出InvocationHandler接口,并接收被代理的对象及方法作为参数invok ...

随机推荐

  1. 89C51单片机定时器控制的流水灯

    /***************************************************Copyright: 2014-02-11.version1.0File name: timer ...

  2. 【原创】只用 HTML / CSS 画出一把 UKULELE(夏威夷四弦吉他)

    在线演示:http://abelyao.github.io/ukulele/  源代码: https://github.com/AbelYao/css-ukulele  效果图:   为了熟练 CSS ...

  3. WEB实时聊天 comet推技术

    转自:http://www.cnblogs.com/wodemeng/archive/2012/04/06/2435302.html 今天晚上朋友遇到web服务端推技术的问题,自己就查了下资料,学习了 ...

  4. html textarea换行和dom换行

    从事开发已经两年多了,但是还是不会发现问题找原因,可能是自己一直在学校养成的习惯吧,不过最近在葛经理的带领下开始学会找原因了,而且发现自己变得更成熟了. 现在讲讲textarea和dom的换行吧,我们 ...

  5. 第五周&第六周

    学习进度表  周数 专业学习目标 学习时间 新增代码行 博客发表量 人文方面学习 知识总结 第四周 认真掌握老师上课所讲的内容,在课外多学习一些知识    5小时 50          1   阅读 ...

  6. Codeforces Round #352 (Div. 2) C. Recycling Bottles 暴力+贪心

    题目链接: http://codeforces.com/contest/672/problem/C 题意: 公园里有两个人一个垃圾桶和n个瓶子,现在这两个人需要把所有的瓶子扔进垃圾桶,给出人,垃圾桶, ...

  7. 【LCA】CodeForce #326 Div.2 E:Duff in the Army

    C. Duff in the Army Recently Duff has been a soldier in the army. Malek is her commander. Their coun ...

  8. 【BZOJ】【1878】【SDOI2009】HH的项链

    树状数组/前缀和 Orz lct1999 好神的做法... 先看下暴力的做法:对于区间[l,r],我们依次扫过去,如果这个数是第一次出现,那么我们种类数+1. 我们发现:区间中相同的几个数,只有最左边 ...

  9. 【BZOJ】【3850】ZCC Loves Codefires

    贪心 就跟NOIP2012国王游戏差不多,考虑交换相邻两题的位置,对其他题是毫无影响的,然后看两题顺序先后哪个更优.sort即可. WA了一次的原因:虽然ans开的是long long,但是在这一句: ...

  10. Leetcode#56 Merge Intervals

    原题地址 排序+合并,没啥好说的 第一次尝试C++的lambda表达式,有种写js的感觉,很神奇 c11就支持了lambda表达式,仔细想想,我学C++大概就是在09~10年,c11还没有发布,不得不 ...