Pattern
Hode
这个作者很懒,什么都没留下…
展开
-
调停者模式Mediator
[list][*]调停者模式让我们思考一个系统怎样设计,如何设计才更好。调停者模式针对的是一个复杂的系统,而调停者作为一个新对象,专门用户该系统原有对象的解耦合操作。相当于一个工作小组中的组长,专门用于解决组员之间的问题。 [*]调停者模式包括:调停者和同事类角色。同事类,在该模式里面用于实现小范围的业务逻辑。调停者负责向具体的同事类指派工作。从某个角度来看,同事类负责具体的业务逻辑,而调...2009-04-09 22:08:47 · 88 阅读 · 0 评论 -
多例模式Multiton
[list][*]多例模式有多个实例 [*]多例模式必须自己创建,管理自己的实例,并向外界提供[*]多实例或者单实例模式的核心在于我们能够控制一个类生成实例的具体数目。 [*]从设计的角度而言,由于用户在生成类的实例的时候,必须按照我们原始设计的限制(譬如单实例,注册,固定的实例),所以使得系统的架构更为清晰,扩展也是在当初的设计考虑之下进行的。[/list]...2009-04-09 22:22:29 · 104 阅读 · 0 评论 -
单实例模式Singleton
[list][*]有且只能有一个实例,必须给其他角色提供该实例 [*]推荐使用 避免了多线程的同步开销,实现也较为简单[/list]饿汉单实例模式 [code="java"]public class className{ public static className instance = new className(); priva...2009-04-09 22:20:47 · 71 阅读 · 0 评论 -
合成模式Composite
[list][*]合成模式的组成为:组件,树枝,树叶 [*]其中组件接口是整个系统的共用接口 [*]树枝里面包含树枝和树叶,树叶是最底部单位,增加新的树枝树叶不需要改变现有的系统,树枝和树叶是相同又不同的。树枝可以是树枝的树叶,树枝下面可能还有树枝和树叶,这就造成树枝和树叶的不同,树枝里面必须包含添加或者删除树叶的方法。而如果把树叶视作树枝,那么这些方法应该是空方法。[/list]...2009-04-09 22:19:29 · 81 阅读 · 0 评论 -
建造模式Builder
[list][*]完整的建造模式涉及如下四个角色:抽象建造者(接口),具体建造者,导演者,产品(抽象产品和具体产品) [*]抽象建造者定制生成产品的几个部分,然后不同的具体建造者不同的实现该接口,在导演者中间根据不同的业务需求生成不同的产品 [*]该设计模式涉及到了一个组合的过程。[/list]...2009-04-09 22:18:59 · 60 阅读 · 0 评论 -
装饰模式Decorator
[list][*]装饰模式是逐层装饰,譬如齐天大圣,七十二般变化,大圣本尊,鱼虫,齐天大圣为抽象构件,大圣本尊为具体构件,七十二般变化为装饰角色,鱼虫为具体装饰角色 [*]装饰角色必须和抽象构件接口一致,七十二般变化就必须保证和齐天大圣接口一致,也就是实现齐天大圣接口; [*]鱼由于继承七十二般变化,所以有如下层次结构:鱼即为七十二般变化即为齐天大圣,这也是符合实际的情况的,当然此鱼必...2009-04-09 22:18:10 · 78 阅读 · 0 评论 -
代理模式Proxy
[list][*]在用户和真实对象之间加了一层保护,用户不直接操作真实对象,而是操作代理,由代理来进行对真实对象的操作。这也就是代理模式的基本原理; [*]代理可以分为:远程,虚拟,CoW,保护,Cache,防火墙,同步化,智能代理多种。由于代理调用真实对象进行业务逻辑操作,这样代理模式可以方便对于界面响应,程序的安全性等多方面加强 [*]代理分为抽象主题角色,代理主题,真实主题角色。...2009-04-09 22:17:27 · 70 阅读 · 0 评论 -
享元模式Flyweight
[list][*]享元模式是对于某个对象的共享的模式,譬如String,对于相同内聚属性的对象,系统只生成一个,这样就大大减少了系统的开销。 [*]享元模式分为:抽象享元角色,具体享元,享元工厂,客户端。其中,具体享元是可以被共享的部分。但是客户端不实际生成具体享元,而是由享元工厂生成享元。工厂生产享元的时候,判断该享元是否创建过,从而达到已经创建过,或者存在享元可以不再重复创建就被客户端...2009-04-09 22:16:48 · 76 阅读 · 0 评论 -
门面模式Facade
[list][*]门面模式应该应用在子系统和子系统之间。门面模式类似于适配器模式,但是门面模式并不包含具体的业务逻辑,门面模式是一个用来减少系统耦合,优化系统架构的接口 [*]门面模式包括门面和子系统两个角色。门面模式提高了子系统的独立性和可移植性。 [*]由于门面模式不包含具体的业务逻辑,这样的好处是子系统内部的逻辑修改了,不影响其他子系统的调用,对其他子系统是透明的。[/lis...2009-04-09 22:16:14 · 70 阅读 · 0 评论 -
不变模式Immutable
[list][*]不变模式只涉及一个类,分为弱不变模式和强不变模式。 [*]弱不变模式:对象没有任何方法会修改对象的状态,属性私有,如果引用对象可变则须限制外界对可变对象的访问 [*]强不变模式:所有方法必须是final类型的,保证其和其子类的实例状态都是不可变化的 [*]不变对象:易于维护,线程安全 [*]Java里面的引用:String(强不变模式),封装类(Integer...2009-04-09 22:14:58 · 80 阅读 · 0 评论 -
策略模式Strategy
[list][*]策略模式是对算法的封装,把使用算法和算法本身分开。 [*]策略模式涉及的角色包括:环境,抽象策略,具体策略。 [*]策略模式的精髓在于封装了具体的策略,算法,至于业务逻辑中什么时候运用这些策略和算法则不在其中。 [*]使用策略模式的场景为:a。系统里面有许多类,区别仅仅在于其行为;b。系统需要动态在集中算法里面选择一种;c。系统算法使用的数据不让客户知道;d。对于...2009-04-09 22:14:19 · 78 阅读 · 0 评论 -
模板方法TemplateMethod
[list][*]模板方法有抽象模板和具体模板方法组成。抽象模板定义了一个或者多个抽象操作,以便让子类实现,为基本操作。具体模板实现了父类定义的一个或者多个抽象方法,每个抽象模板角色都有其具体模板角色与之对应。换言之,模板方法在抽象类里面定义了一个骨架流程,A,B,C,然后在具体模板方法(子类)里面实现A,B,C [*]设计的考虑,继承是对象设计的一个考虑,但是滥用继承,和不用继承都是欠妥...2009-04-09 22:13:40 · 71 阅读 · 0 评论 -
观察者模式Observer
[list][*]观察者模式分为:抽象主题,抽象观察者,具体主题,具体观察者。 [*]主要实现的模式是抽象主题定义对观察者的操作,具体主题管理观察者的一个聚集,并实现相应的操作。观察者是由具体主题调用的。观察者的聚集如果是相同的,则可以放到抽象主题里面。 [*]AWT中的DEM机制(委派事件模型)就是观察者模式的应用。具体的Action作为观察者订阅感兴趣的事件。而当事件触发的时候,事...2009-04-09 22:12:53 · 86 阅读 · 0 评论 -
责任链模式Chain of Responsibility
[list][*]责任链模式分为两个角色:抽象处理者,具体处理者。抽象处理者一般是个接口,具体处理者要么处理事务,要么把请求转交给下一个处理者; [*]单纯的责任链模式,一个处理者要么处理事务,要么把事务传递给下一个处理者。不管怎样,事务总有一个人来执行。对于不纯的责任链模式,可能出现处理者处理一部分事务之后,继续往下传递的情况,事务也有可能直到传递结束,也没有被执行。通常,不纯的责任链模...2009-04-09 22:11:57 · 76 阅读 · 0 评论 -
访问者模式Visitor
[list][*]什么是访问者模式,就是我们通过JAVA的自动类型转换,实现多次转换的模式。 [*]我们如何利用JAVA的特性实现类型的自动转换呢?首先我们看一下访问者模式里面有一下若干角色,访问者(包括抽象和具体访问者),节点(抽象和具体),结构对象。在访问者方法中,我们定义了节点中的方法B调用节点的方法。在节点方法中,我们定义了节点方法A调用访问者方法。这样一来,我们只要调用节点方法A...2009-04-09 22:10:21 · 62 阅读 · 0 评论 -
解释器模式Interpreter
[list][*]解释器模式是针对一些一再发生的问题的解决的一种模式。譬如浏览器。 [*]解释器模式包括以下部分:抽象表达式,具体表达式,客户端,环境。其中,客户端建造了一个抽象语法树,调用解释操作,而能够解释这些语法的部分在表达式中,环境提供了一些全局信息。 [*]系统有一个简单的语言可以解释,可以处理一些重复发生的问题,效率不是主要的考虑。[/list]...2009-04-09 22:09:32 · 87 阅读 · 0 评论 -
抽象工厂模式AbstractFactory
[list][*]抽象工厂模式是对工厂方法模式的一个很大的扩充。 [*]工厂方法模式和抽象工厂模式的最大区别为抽象工厂模式要面对多个抽象产品引发的不同类型的产品,也就是说集合了多个工厂方法模式,比工厂方法模式更加普遍。 [*]简化了的抽象工厂模式即为工厂方法模式 [*]该模式提供了对于一系列产品的构造手段[/list]例子:IBM生成CPU和RAM,生产的CPU分为MA...2009-04-09 22:23:22 · 69 阅读 · 0 评论