`
laughingchs
  • 浏览: 67926 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
一、中介者模式简介(Brief Introduction) 中介者模式(Mediator Pattern),定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。 D ...
一、引言 初看责任链模式,心里不禁想起了一个以前听过的相声:看牙。说的是一个病人看牙的时候,医生不小心把拔下的一个牙掉进了病人嗓子里。病人因此楼上楼下的跑了好多科室,最后无果而终。   责任链模式就是这种“推卸”责任的模式,你的问题在我这里能解决我就解决,不行就把你推给另一个对象。至于到底谁解决了这个问题了呢?我管呢!   二、定义与结构 从名字上大概也能猜出这个模式的大概模样——系统中将会存在多个有类似处理能力的对象。当一个请求触发后,请求将在这些对象组成的链条中传递,直
一、引子 还记得警匪片上,匪徒们是怎么配合实施犯罪的吗?一个团伙在进行盗   窃的时候,总    有一两个人在门口把风——如果有什么风吹草动,则会立即通知里面的同伙紧急撤退。也许放风的人并不一定认识里面的每一个同伙;而在里面也许有新来的小弟不认识这个放风的。但是这没什么,这个影响不了他们之间的通讯,因为他们之间有早已商定好的暗号。 呵呵,上面提到的放风者、偷窃者之间的关系就是观察者模式在现实中的活生生的例子。       二、定义与结构     观察者(Observer
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。   注意:在模板方法中,我们可以定义一个骨架方法,用来确定整个算法的骨架和流程;可以在超类中实现一些固定的步骤,然后将一些可变的步骤当作抽象方法,由不同子类来提供不同的实现;同时,对于算法中的一些可选步骤,我们可以通过使用一些钩子方法(一般在父类提供默认实现)来改变算法的一些可选流程或提供默认的实现,由子类决定是否覆盖这些钩子方法。   ps:当然,模板方法模式并不一定是通过继承来实现的,例如数组对象Arrays的sort方法就是一种变体,通过 ...

策略模式

一、引子 18日下午3时一刻,沈阳,刚刚下完一场几年罕见的大雪,天气格外的冷,公交车在“车涛汹涌”的公路上举步维艰,我坐在里面不时的看表——回公司的班车就要发车了,我还离等车的地方好远……。都是这可恶的天气打乱了我的计划!看来我要重新盘算下下了公交车的计划了:如果在半点以前能够到达等班车的地方,我就去旁边卖书报的小店里面买份《南方周末》,顺便逼逼严寒;如果可恶的公交到时候还不能拱到的话,我就只好去附近的家乐福里面打发两个小时直到下一趟班车发车! 打住!! 其实在上面提到的就是对两种不同情况所采取的不同的策略。这种情况在实际系统中也是经常遇到,那么你是怎么来实现不同的策略的呢?也许你 ...
本文是转的 一、引子       话说十年前,有一个暴发户,他家有三辆汽车——Benz奔驰、Bmw宝马、Audi奥迪,还雇了司机为他开车。不过,暴发户坐车时总是怪怪的:上Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“开 ...
适配器模式:将一个类的接口,转换成客户期望的另外一个接口。适配器让原本接口不兼容的类可以很好的合作。     装饰者模式:动态的将责任附加到对象上(因为利用组合而不是继承来实现,而组合是可以在运行时进行随机组合的)。若要扩展功能,装饰者提供了比继承更富有弹性的替代方案(同样地,通过组合可以很好的避免类暴涨,也规避了继承中的子类必须无条件继承父类所有属性的弊端)。 特点: 1. 装饰者和被装饰者拥有相同的超类型(可能是抽象类也可能是接口) 2. 可以用多个装饰类来包装一个对象,装饰类可以包装装饰类或被装饰对象 3. 因为装饰者和被装饰者拥有相同的抽象类型,因此在任何需要原始对象(被包 ...

command模式

command模式: command模式允许我们将动作封装成命令对象(这个对象可能是在一个接受者上绑定了一组操作,也可能是自己实现了一组功能,或者其是个组合命令),这样一来我们就可以随心所意的存储、传递和调用它们(甚至我们可以在该对象创建很久之后或者在另外一个线程上来调用它),我们的线程池即是一个最好的例子。最关键的还是把命令的请求者和命令的接受者解藕了。
         今天有同事搭建项目的冒烟环境,搭建了快一天一直没搭建成功。后来,晚上我帮忙查看的时候,发现系统在启动的时候大部分的service都启动失败,这些service都在通过log4j打log的时候就开始抛出异常,异常信息如下: ...
代码点、字符编码方案、UTF-16:这些是指什么? 不幸的是,引入增补字符使字符模型变得更加复杂了。在过去,我们可以简单地说“字符”,在一个基于 Unicode 的环境(例如 Java 平台)中,假定字符有 16 位,而现在我们需要更多的术语。我们会尽量介绍得相对简单一些 — 如需了解所有详细的讨论信息,您可以阅读 Unicode 标准第 2 章或 Unicode 技术报告 17“字符编码模型”。Unicode 专业人士可略过所有介绍直接参阅本部分中的最后定义。 字符是抽象的最小文本单位。它没有固定的形状(可能是一个字形),而且没有值。“A”是一个字符,“€”(德国、法国和许多其他欧洲国 ...
代码点、字符编码方案、UTF-16:这些是指什么? 字符集是字符的集合。例如,汉字字符是中国人最先发明的字符,在中文、日文、韩文和越南文的书写中使用。 编码字符集是一个字符集,它为每一个字符分配一个唯一数字。Unicode 标准的核心是一个编码字符集,字母“A”的编码为 004116 和字符“€”的编码为 20AC16。Unicode 标准始终使用十六进制数字,而且在书写时在前面加上前缀“U+”,所以“A”的编码书写为“U+0041”。 代码点是指可用于编码字符集的数字。编码字符集定义一个有效的代码点范围,但是并不一定将字符分配给所有这些代码点。有效的 Unicode 代码点范围 ...
最近碰到有个应用的JVM老是隔一段时间突然Crash,没有打出任务异常日志;只有一份Crash前的出错日志。主要如下   # # A fatal error has been detected by the Java Runtime Environment: # #  SIGSEGV (0xb) at pc=0x00002b9ecee05dc9, pid=28924, tid=1093744960 # # JRE version: 6.0_18-b07 # Java VM: Java HotSpot(TM) 64-Bit Server VM (16.0-b13 mixed ...
Global site tag (gtag.js) - Google Analytics