
java pattern
文章平均质量分 77
feiyeguohai1
这个作者很懒,什么都没留下…
展开
-
工厂模式
一、引子 话说十年前,有一个暴发户,他家有三辆汽车——Benz奔驰、Bmw宝马、Audi奥迪,还雇了司机为他开车。不过,暴发户坐车时总是怪怪的:上Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“开宝马车!”,坐上Audi说“开奥迪车!”。你一定说:这人有病!直接说开车不就行了?! 而当把这个暴发户的行为放到我们程序设计中来时,会发现这是一个普遍存在的现象。幸运的是,这...原创 2011-05-17 22:07:57 · 107 阅读 · 0 评论 -
设计模式之Decorator
设计模式之Decorator(油漆工) 装饰模式:Decorator常被翻译成"装饰",我觉得翻译成"油漆工"更形象点,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee.这两种实体在Decorator模式中是必须的.Decorator定义: 动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorato...原创 2012-03-30 16:44:03 · 83 阅读 · 0 评论 -
访问者模式 Visitor(转)
一、引子 对于系统中一个已经完成的类层次结构,我们已经给它提供了满足需求的接口。但是面对新增加的需求,我们应该怎么做呢?如果这是为数不多的几次变动,而且你不用为了一个需求的调整而将整个类层次结构统统地修改一遍,那么直接在原有类层次结构上修改也许是个 不错 的主意。 但是往往我们遇到的却是:这样的需求变动也许会不停的发生;更重要的是需求的任何变动可能都要让你将整个类层次结构修改个底...原创 2012-06-25 14:49:22 · 110 阅读 · 0 评论 -
策略模式 Strategy
策略模式(Strategy):它定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable. Strategy lets th...原创 2012-06-21 10:30:26 · 104 阅读 · 0 评论 -
模板方法模式 Template Method
GOF给模板方法(Template Method)模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。这里的算法的结构,可以理解为你根据需求设计出来的业务流程。特定的步骤就是指那些可能在内容上存在变数的环节。 可以看出来,模板方法模式也是为了巧妙解决变化对系统带来的影响而设计的。使用模板方法使系统扩展性增强,最小化了变化对系统...原创 2012-06-21 10:21:26 · 79 阅读 · 0 评论 -
状态模式 State
State模式的定义: 不同的状态,不同的行为;或者说,每个状态有着相应的行为.何时使用?State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif else 进行状态切换, 如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了.不只是根据状态,也有根据属性.如果某个对象的属性不同,对象的行为就不一样,这点在数据库系统中出现频率比较...原创 2012-06-19 15:37:46 · 110 阅读 · 0 评论 -
迭代器模式 iterator
一、 引言 迭代这个名词对于熟悉Java的人来说绝对不陌生。我们常常使用JDK提供的迭代接口进行java collection的遍历:Iterator it = list.iterator();while(it.hasNext()){ //using “it.next();”do some businesss logic} 而这就是关于迭代器模式应用很好的例子。 二、 定义与...原创 2012-06-18 14:58:29 · 83 阅读 · 0 评论 -
责任链模式 chain of responsibility(原)
动机:在开发过程中有一种情况:一个事件产生一个请求,这个请求需要很多对象来处理它,更极端一点,我们不能直接访问这些对象。这种情况下我们有两种解决方案: 1、让这些对象变成public,创建这些对象的引用,然后处理这个请求 2、使用责任链模式在责任链模式中,一组处理请求的对象构成一条链子,每个对象都可以处理请求而且持有下个对象的引用,请求从一个对象传递到下一个...原创 2012-06-15 15:56:11 · 94 阅读 · 0 评论 -
享元模式 flyweight
个人理解:当系统内部需要使用大量的细粒度对象时,内存中每种类型的细粒度对象只存在一个实例,通过给这个实例包装一下,增加一些特殊的属性,生成一个实现类,然后再有client类来维护实现类的特殊属性,这个模式的好处就是不必在内存中一次次的创建、销毁享元对象,而通过工厂来获取内存中已经存在的对象。文章最后有个例子,看了就明白了。 Flyweight在拳击比赛中指最轻量级,即"蝇量级",...原创 2012-06-14 15:45:58 · 154 阅读 · 0 评论 -
外观模式 Facade
先做个总结:外观模式就是提供一个高层接口来集成、制定、调用子系统的功能,达到客户端和子系统之间的解耦两篇文章来解释:一、外观模式(又称门面模式)是软件工程中常用的一种软件设计模式。它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。 结构 Facade 这个外观类为子系统中Packages 1、2、3提供一个共同的对外接口 ...原创 2012-06-13 16:02:04 · 83 阅读 · 0 评论 -
命令模式
优点:解耦了发送者和接受者之间联系。 发送者调用一个操作,接受者接受请求执行相应的动作,因为使用Command模式解耦,发送者无需知道接受者任何接口。不少Command模式的代码都是针对图形界面的,它实际就是菜单命令,我们在一个下拉菜单选择一个命令时,然后会执行一些动作.将这些命令封装成在一个类中,然后用户(调用者)再对这个类进行操作,这就是Command模式,换句话说,本来用户...原创 2011-12-09 15:35:02 · 111 阅读 · 0 评论 -
观察者模式
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically uml图 观察者模式定义了一种一对多 的依赖关系,让多个观察者对象同时监听某一个主题...原创 2011-12-09 10:50:12 · 111 阅读 · 0 评论 -
组合模式(Composite)
The figure below shows a UML class diagram for the Composite Pattern: Component - Component is the abstraction for leafs and composites. It defines the interface that must be implemented by the ob...原创 2012-06-13 15:33:11 · 117 阅读 · 0 评论 -
适配器模式(Adapter )
Adapter - Convert the interface of a class into another interface clients expect. / Adapter lets classes work together, that could not otherwise because of incompatible interfaces. The figure below...原创 2012-06-13 14:46:50 · 139 阅读 · 0 评论 -
Bridge桥接模式
Bridge桥接模式是一种结构型模式,它主要应对的是:由于类型的固有罗辑,使得类型具有两个或两个以上的纬度变化。也就是要求抽象不应依赖于实现细节,实现细节应依赖于抽象。 《设计模式》中说到将抽象部分与实现部分分离,使他们可以独立的变化。 举个例子更清楚些,好像我们平时玩的游戏中有PS版的,但是不是大家都有PS。这时我们等一段时间,一般会出PC版的或其他版本。由于支...原创 2012-06-08 15:24:24 · 83 阅读 · 0 评论 -
代理模式
代理模式:给某一对象提供代理对象,并由代理对象控制具体对象的引用. 代理,指的就是一个角色代表另一个角色采取行动,就象生活中,一个红酒厂商,是不会直接把红酒零售客户的,都是通过代理来完成他的销售业务的.而客户,也不用为了喝红酒而到处找工厂,他只要找到厂商在当地的代理就行了,具体红酒工厂在那里,客户不用关心,代理会帮他处理. 代理模式涉及的角色: 1:抽象主题角色.声明了代理主题和真实主题的公共接口...原创 2012-06-08 11:06:15 · 80 阅读 · 0 评论 -
设计模式(Design Pattern)的原则
设计模式(Design Pattern)的原则 1、"开-闭"原则——模块应对扩展开放,而对修改关闭。(最最核心的原则) 2、里氏代换原则——如果调用的是父类的话,那么换成子类也完全可以运行。里氏代换原则是继承复用的一个基础。 子类 overload方法的访问权限不能小于父类对应方法的访问权限 3、合成复用原则——要少用继承,多用合成关系来实现。(合成包括:组合,聚...原创 2012-06-08 11:00:28 · 88 阅读 · 0 评论 -
抽象工厂 理解
抽象工厂模式 抽象工厂模式(英语:Abstract Factory)是一种常见的设计模式。此模式为一个产品家族提供了统一的创建接口。当需要这个产品家族的某一系列的时候,可以从抽象工厂中选出相对系的系列来创建一个具体的工厂类别。假设我们有两种产品接口 Button 和 Border ,每一种产品都支持多种系列,比如 Mac 系列和 Windows 系列...原创 2011-10-14 18:22:27 · 148 阅读 · 0 评论 -
原型模式 Prototype Pattern
一. 原型模式简介 原型模式(Prototype Pattern)也是一种创建型模式,它关注的是大量相似对象的创建问题。我们经常会遇到这样的情况:在系统中要创建大量的对象,这些对象之间具有几乎完全相同的功能,只是在细节上有一点儿差别。 这样的情形经常遇到。三国系列游戏是我最喜欢的游戏系列之一。你有没有注意到那里边上百位英雄的头像基本上很相似?你仔细区分就会发现,虽然每...原创 2012-03-30 18:34:40 · 132 阅读 · 0 评论