- 浏览: 173371 次
- 性别:
- 来自: 杭州
最新评论
-
lgh1992314:
String.intern()在全局常量池1.8在native ...
Java 内存模型 -
lgh1992314:
try with resource
Java GC的过程 -
lgh1992314:
JDK8 HotSpot 方法区在MetaSpace
Java 内存模型 -
空城回转:
永洁童心 写道最后的图中,在afterload_1步骤中,op ...
栈帧、局部变量表、操作数栈 -
永洁童心:
最后的图中,在afterload_1步骤中,operand s ...
栈帧、局部变量表、操作数栈
文章列表
话说有一个银行,有三个窗口,但是每个窗口的智能都是一样的,即都能办理所有的业务。因此每位来银行办理业务的人只要排队就是了,排到你了,就向业务员说明你要办理的业务,然后业务员根据你的业务选择不同的单据, ...
引子
俗话说:世上难买后悔药。所以凡事讲究个“三思而后行”,但总常见有人做“痛心疾首”状:当初我要是……。如果真的有《大话西游》中能时光倒流的“月光宝盒”,那这世上也许会少一些伤感与后悔——当然这只能 ...
1.定义
要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。门面模式注重“统一的对象”,也就是提供一个访问子系统的接口,除了这个接口不允许有 ...
1.定义
定义对象之间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖它的对象都会得到通知并自动更新
观察者模式也叫发布订阅模式
2.观察者模式的使用场景
关联行为场景。需要注意的是,关联行为是可拆分的,而不是“组合”关系。也就是说观察者的生命周期不由被观察者管理。
事件多级触发场景。
跨系统的消息交换场景,如消息队列的处理机制。
相信大家都看过无间道,那么应该对我下面抽象的土匪在警局里面安插卧底的代码不会陌生,这就非常形象地描述了观察者模式。
package _16ObserverPattern;
import java.util.ArrayLi ...
1.定义
将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。
组合模式又叫做树形模式。其在项目开发中涉及树的结构都会想到组合模式。
2.引子
我们计算机的文件系统就是一个典型组合模式的使用,文件分为两种:一、文件夹,二、文件。其中文件夹可以包含文件,也可以包含子文件夹。如果我们用资源管理器打开某个文件夹,发现它展开在左侧的是一个树形结构。
而我们的组合模式就是为了解决这种树形结构的递归问题。这种问题在生活中很常见,比如某个机关的人事关系图。
3.组合模式的使用场景
维护和展示部分-整体关系的场景,比如树形菜单、 ...
1.定义
提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。
目前是一个没落的模式,基本上没人会单独写一个迭代器,除非是产品性质的开发。
2.类型
行为类模式
3.类图
4.迭代器模式的使 ...
1.定义
将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
适配器模式又叫做变压器模式。
2.适配器模式的应用场景
适配器模式应用的场景只要记住一点就足够了:你有动机修改一个已经投产中的接口时,适配器模式可能是最适合你的模式。比如系统扩展了,需要使用一个已有或新建立的类,但这个类又不符合系统的接口,怎么办?使用适配器模式。
日常生活中也是经常能见到这样的模式的,相信很多人都知道什么是显卡,也有很多人知道显卡的本名——图形适配器。我们知道显示器是用来显示图形的,它是不能显示数据,它只能够接受来自图形发送设备的信号 ...
1.定义
定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。
策略模式是一种比较简单的模式,也叫做政策模式。
2.策略模式的使用场景
多个类只有在算法或行为上有不同的场景
算法需要自由切换的场景
需要屏蔽算法规则的场景
下面看一个例子:
zip和gzip文件格式相信大家都很熟悉,它们是两种不同的压缩格式,我们今天就来对一个目录或文件实现两种不同的压缩格式。
package _12StrategyPattern;
/**
* 抽象压缩算法
*/
public abstract class Algorithm {
// 压缩算法
...
1.定义
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更灵活。
2.装饰模式的使用场景
需要扩展一个类的功能,或给一个类增加附加功能
需要动态地给一个对象增加功能,这些功能可以 ...
1.定义:
使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。
责任链模式是一种对象的行为模式。
2.通用代码
这个模式很简单,也许看完通用代码就能理解了:
package _10ChainOfResponsibility;
public abstract class Handler {
private Handler nextHandler;
public final void service(String request)
{
// 判断自己能否提供 ...
1.定义
将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。
命令模式属于行为模式。
2.命令模式的使用场景
只要我们认为是命令的地方 ...
0.安装rubyinstaller-1.9.3
下载地址:http://rubyinstaller.org/downloads
1.安装RubyGems
gem update --system
2.安装vmc
gem install vmc
3.安装DevKit
下载地址:http://rubyinstaller.org/downloads
参考:https://github.com/oneclick/rubyinstaller/wiki/development-kit
ruby dk.rb init
ruby dk.rb review
ruby dk.rb install ...
1.定义:
用一个中介对象封装一系列的对象交互,中介者使个对象不需要显示的相互作用,从而使其耦合松散,而且可以独立地改变他们之间的交互。
2.解析:
这段话不明白没关系,我们先来看这样的一个场景:
公司有1个领导,9个职员,有一天领导要去公司的图书馆找一本书,领导一看图书馆的这本书已经被借走了,他就去问职员1有没有拿走,如果没有就继续问职员2……终于领导找到了他想看的书。
在这个例子中最差的情况下,领导对象竟然要和9个职员对象进行耦合,从我们软件设计的角度来看是相当不合理的。
我们把上面这个故事抽象成一个简单的程序就编程了这样的代码:
package _8MediatorPa ...
1.定义:
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
原型模式的核心是一个clone方法,通过该方法进行对象的拷贝(注意浅拷贝和深拷贝的区别)。
2.原型模式的使用场景:
资源优化场景:类初始化需要消耗非常多的资源,这个资源包括数据、硬件资源等。
性能和安全要求的场景:通过new产生一个对象需要非常繁琐的数据准备或访问权限。
一个对象多个修改者的场景:一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑用原型模式拷贝多个对象供调用者使用。
在实际项目中,原型模式很少单独出现,一般是和工厂方法模式一起出现,通过clone的方法 ...
1.定义:
为其他对象提供一种代理以控制这个对象的访问。
代理模式也叫委托模式,它是一项基本设计技巧。许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了代理模式。
2.代理模式的三个角色定义:
Subject抽象主题角色:抽象主题类可以是抽象类,也可以是接口,是一个最普通的业务类型定义,无特殊要求。
RealSubject具体主题角色:也叫被委托角色、被代理角色。是业务逻辑的具体执行者。
Proxy代理主题角色:也叫委托类、代理类。它负责对真实角色的应用,把所有抽象主题类定义的方法限制委托给真实主题角色实现,并且在真实主题角色处理完毕前后做预处理和善 ...