- 浏览: 779148 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
萨琳娜啊:
Java读源码之Netty深入剖析网盘地址:https://p ...
Netty源码学习-FileRegion -
飞天奔月:
写得有趣 ^_^
那一年你定义了一个接口 -
GoldRoger:
第二个方法很好
java-判断一个自然数是否是某个数的平方。当然不能使用开方运算 -
bylijinnan:
<script>alert("close ...
自己动手实现Java Validation -
paul920531:
39行有个bug:"int j=new Random ...
java-蓄水池抽样-要求从N个元素中随机的抽取k个元素,其中N无法确定
声明:
本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/** * 个人觉得关于桥接模式的例子,蜡笔和毛笔这个例子是最贴切的:http://www.cnblogs.com/zhenyulu/articles/67016.html * 笔和颜色是可分离的,蜡笔把两者耦合在一起了:一支蜡笔只有一种颜色。大、中、小三种尺寸的蜡笔,12种颜色,那一共需要3*12个类 * 画中国山水画时就不一样了,一支毛笔可以搭配不同的颜色,只需要大、中、小三支毛笔,外加12种颜色,那就只需12+3个类 * * 书上的例子: * 消息和消息发送 * 消息有很多种,普通的、加急的 * 消息发送方式也有很多种,站内信的、短信的、邮件的 * 因此要把“消息”和“消息发送方式”分离开来。如果要增加一种消息或者增加一种发送方式,都不会影响到原来的代码 * * 网上的例子: * 公路和汽车 * 也是同样的道理 * * 原来桥接模式就是把类的职责单一化,然后用类组合的形式来实现复杂的功能 * * 看一下下面的代码,发现桥接模式和策略模式是非常相似的。AbstractBrush就相当于是策略模式里面的Context,只是策略模式里面的Context通常 * 只有一个,但桥接模式的AbstractBrush的实现有多个。可以把策略模式看作是桥接模式的退化 */ interface IColor { void sprinkleOnCanvas(); } class RedColor implements IColor { public void sprinkleOnCanvas() { System.out.println("Sprinkle red color on canvas." ); } } class BlueColor implements IColor { public void sprinkleOnCanvas() { System.out.println("Sprinkle blue color on canvas." ); } } abstract class AbstractBrush { protected IColor color; public AbstractBrush(IColor color) { this.color = color; } protected void paint() { this.color.sprinkleOnCanvas(); } } class BigBrush extends AbstractBrush{ public BigBrush(IColor color) { super(color); } public void paint() { System.out.print("Use big brush:"); super.paint(); } } class SmallBrush extends AbstractBrush{ public SmallBrush(IColor color) { super(color); } public void paint() { System.out.print("Use small brush:"); super.paint(); } } /** * 书上的例子 */ interface IMessageSender { void send(String message, String toUser); } //消息的基类。普通消息、加急消息都是它的子类 abstract class AbstractMessage { protected IMessageSender sender; public AbstractMessage(IMessageSender sender) { this.sender = sender; } public void sendMessage(String message, String toUser) { this.sender.send(message, toUser); } } //用短信的方式发送消息 class MessageSenderInSMS implements IMessageSender { public void send(String message, String toUser) { System.out.println("SMS:Send message to " + toUser + ",message is " + message); } } //用email的方式发送消息 class MessageSenderInEmail implements IMessageSender { public void send(String message, String toUser) { System.out.println("Email:Send message to " + toUser + ",message is " + message); } } //普通消息 class CommonMessage extends AbstractMessage { public CommonMessage(IMessageSender sender) { super(sender); } public void sendMessage(String message, String toUser) { super.sendMessage(message, toUser); } } //加急消息。比普通消息多了一些处理 class UrgencyMessage extends AbstractMessage { public UrgencyMessage(IMessageSender sender) { super(sender); } public void sendMessage(String message, String toUser) { message = "(urgency!)" + message; super.sendMessage(message, toUser); } public Object watch(String messageID) { System.out.println("Watching. MessageID = " + messageID); return null; } } public class BridgePatternBrush { public static void main(String[] args) { //先用红色。大笔和小笔各画一次 IColor color = new RedColor(); AbstractBrush bigBrush = new BigBrush(color); AbstractBrush smallBrush = new SmallBrush(color); bigBrush.paint(); smallBrush.paint(); //换一种颜色 IColor color2 = new BlueColor(); bigBrush = new BigBrush(color2); smallBrush = new SmallBrush(color2); bigBrush.paint(); smallBrush.paint(); //sms IMessageSender smsSender = new MessageSenderInSMS(); AbstractMessage commonMessage = new CommonMessage(smsSender); AbstractMessage urgencyMessage = new UrgencyMessage(smsSender); commonMessage.sendMessage("hello", "Kobe"); urgencyMessage.sendMessage("hello", "Kobe"); //email IMessageSender emailSender = new MessageSenderInEmail(); commonMessage = new CommonMessage(emailSender); urgencyMessage = new UrgencyMessage(emailSender); commonMessage.sendMessage("hello", "Kobe"); urgencyMessage.sendMessage("hello", "Kobe"); } }
发表评论
-
J2EE设计模式-Intercepting Filter
2013-11-27 16:56 1506Intercepting Filter类似于职责链模式 有两种 ... -
《重构,改善现有代码的设计》第八章 Duplicate Observed Data
2012-12-04 20:34 1475import java.awt.Color; impor ... -
读《研磨设计模式》-代码笔记-状态模式-State
2012-10-07 16:56 1388声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移 ... -
读《研磨设计模式》-代码笔记-访问者模式-Visitor
2012-10-06 23:43 1051声明: 本文只为方便我 ... -
读《研磨设计模式》-代码笔记-命令模式-Command
2012-10-06 23:40 1167声明: 本文只为方便我 ... -
读《研磨设计模式》-代码笔记-适配器模式-Adapter
2012-09-26 00:23 1373声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移 ... -
读《研磨设计模式》-代码笔记-外观模式-Facade
2012-09-25 23:46 1007声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移 ... -
读《研磨设计模式》-代码笔记-解释器模式-Interpret
2012-09-23 23:55 1202声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移 ... -
读《研磨设计模式》-代码笔记-备忘录模式-Memento
2012-09-23 00:05 1720声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移 ... -
读《研磨设计模式》-代码笔记-享元模式-Flyweight
2012-09-21 21:01 1175声明: 本文只为方便我 ... -
读《研磨设计模式》-代码笔记-抽象工厂模式-Abstract Factory
2012-09-21 20:59 963声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移 ... -
读《研磨设计模式》-代码笔记-职责链模式-Chain Of Responsibility
2012-09-15 17:57 1606声明: 本文只为方便我 ... -
读《研磨设计模式》-代码笔记-装饰模式-Decorator
2012-09-15 17:56 1161声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移 ... -
读《研磨设计模式》-代码笔记-策略模式-Strategy
2012-09-12 18:24 1065声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移 ... -
读《研磨设计模式》-代码笔记-工厂方法模式
2012-08-24 16:57 1142声明: 本文只为方便我 ... -
读《研磨设计模式》-代码笔记-简单工厂模式
2012-08-24 16:56 1089声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移 ... -
读《研磨设计模式》-代码笔记-组合模式
2012-08-23 18:13 878声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移 ... -
读《研磨设计模式》-代码笔记-模板方法模式
2012-08-23 18:12 1259声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移 ... -
式工工工工
2012-08-23 00:09 0package pattern; //=========== ... -
读《研磨设计模式》-代码笔记-原型模式
2012-08-21 19:34 1083声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移 ...
相关推荐
研磨设计模式-配套源代码研磨设计模式-配套源代码
研磨设计模式-配套源代码.rar
研磨设计模式-配套源代码.7z
研磨设计模式第二版-配套源代码 UTF-8格式 研磨设计模式第二版-配套源代码 UTF-8格式
“1.1 设计模式是什么 1.1.1 什么是模式 从字面上理解,模,就是模型、模板的意思;式,就是方式、方法的意思。综合起来,所谓模式就是:可以作为模型或模板的方式或方法。... “研磨设计模式”。 iBooks.
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;...
《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...
单例模式、工厂方法模式、策略模式、命令模式和桥接模式。
《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...
1:本源代码是《研磨设计模式》一书的配套源代码 2:每个模式的示例源代码放在一个单独的文件夹下,以该模式的英文名称命名 3:每个模式下分成多个example,按照书的示例顺序分别命名为example1、example2.........
完整清晰版,完美书签. 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。...第24章 桥接模式(Bridge) 第25章 访问者模式(Visitor) 附录A常见面向对象设计原则 附录BUML简介 参考文献
完整清晰版,完美书签. 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。...第24章 桥接模式(Bridge) 第25章 访问者模式(Visitor) 附录A常见面向对象设计原则 附录BUML简介 参考文献
完整清晰版,完美书签. 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。...第24章 桥接模式(Bridge) 第25章 访问者模式(Visitor) 附录A常见面向对象设计原则 附录BUML简介 参考文献
研磨设计模式的配套源码,请下载,不要想了,解压后,直接放到eclipse下面即可运行!
研磨设计模式 源代码 书上面的例子都在里面
研磨设计模式全部源代码,个人收集,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
本电子书一共两个压缩文档,本文件为part2. 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以...第24章 桥接模式(Bridge) 第25章 访问者模式(Visitor) 附录A常见面向对象设计原则 附录BUML简介 参考文献
《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...
《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...
《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。初级内容从基本讲起,包括每个模式的定义、功能、思路、结构、基本实现、运行调用顺序、基本应用示例等,让读者能系统、完整、准确地掌握每个模式,...