[译]Java 设计模式之中介者】的更多相关文章

(文章翻译自Java Design Pattern: Mediator) 中介者设计模式被用于一组的同事进行协作.这些同事不彼此进行直接的交流联系,但是是通过中介者. 在下面的例子中,A同事想去说话,B同事先去打架.当他们做些事情时候他们调用了中介者的方法去做这些. 中介者模式类图 中介者Java代码 package designpatterns.mediator; interface IMediator { public void fight(); public void talk(); pu…
博文原址:折腾Java设计模式之中介者模式 中介者模式 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护.中介者模式属于行为型模式. 通俗点来讲就是提供一个中介平台,说到平台,那其实很容易联系到我们很熟悉的房地产中介.我们可以直接通过这个平台得到我们想要的信息,不用对象自身与其他对象交互. 买房子租房子就不需要去找房东,只需要在中介那里获取相应的房产信息.如下图那样,两方只需…
目录 应用场景 中介者模式 定义 意图 主要解决问题 何时使用 优缺点 世界贸易组织WTO 应用场景 系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象 想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类 中介者模式 定义 包装了一系列对象相互作用的方式,使得这些对象不必互相明显引用,从而使得他们比较松散的耦合 设计原则:迪米特法则 意图 使用一个中介对象来封装一系列的对象交互,中介者使得这些对象不必互相明显引用,从而使得他们比较松散的耦合,而且可以…
(文章翻译自Java Design Pattern: Singleton) 单例是在Java最经常被用到的设计模式.它通过阻止其他的实例化和修改来用于控制创建对象的数目.这一特性可应用于那些当只有一个对象存在时能够更加有效的系统,或者是限制对象的实例化数目,比如: 1.私有化构造器(private constructor -)-没有其他的类可以实现化一个新的对象 2.私有化引用(private reference -)-没有其他的修改 3.公共的静态方法(public static method…
(文章翻译自Java Design Pattern: Bridge) 简单来说,桥梁设计模式是一个两层的抽象. 桥接模式就是从一个抽象中实现中解耦以便两个都可以独立的改变.桥接使用封装聚合而且使用继承将职责分配到不同的类中. ###1.桥接的来历 下面TV和远程控制的例子能够演示两层的抽象.你可以有一个针对TV的接口而且一有个对于远程控制的抽象类.你知道的,这不是一个好的做法去针对他们的每一个的具体类,因为其他的(vendors )供应商能够提供不同的实现. 2.桥接模式Java代码 首先定义T…
(文章翻译自Java Design Pattern: Decorator – Decorate your girlfriend) 1.装饰模式的来历 让我们假设你在寻找一个女朋友.有来自像没美国中国日本法国等等的不同国家的女孩.她们有不同的习惯和个性.在一个像eharmony.com的约会网站,如果每个类型的女孩都是一个独立的Java类,这样就会有成千上万个类.这样就会导致一个严重的叫做类爆炸的问题.还有就是这个设计不同扩展的.不管在任何时候只要有一个心的女孩类型,一个新的类就需要被创建. 让我…
(文章翻译自Java Design Pattern: Template Method) 模板方法设计模式定义了归档特定操作的工作流.它允许子类去修改特定的步奏而不用改变工作流的结构. 下面的例子表示模板方法模式是怎么工作的. 类图 Java 代码 Vehicle:java定义了一个小型车并且使其可以运作. package com.programcreek.designpatterns.templatemethod; abstract public class Vehicle { //set to…
(文章翻译自Java Design Pattern: Factory) 1.Java工厂模式的来历 工厂设计模式用于创建基于不同参数的对象.下面的例子就是在一个工厂里创建一个人.如果我们向工厂要一个boy,工厂就会生产一个boy;如果我们向工厂要一个girl,工厂就会生产一个girl.基于这些不同的参数,工厂就会生产不同的东西. 2.工厂模式类图 3.工厂模式Java代码 interface Human { public void Talk(); public void Walk(); } cl…
(文章翻译自Java Design Pattern: Facade) 外观设计模式隐藏了任务的复杂性而只是提供了一个简单的接口.一个非常好的例子就是计算机的启动.当一个计算机启动的时候,它涉及CUP.内存 .硬件驱动等等的工作.为了更容易让用户去使用,我们我提供了一个封装任务的复杂性的外观方式,提供了一个简单的接口用来替代. 1.外观模式类图 2.Java外观模式例子 //the components of a computer class CPU { public void processDa…
(文章翻译自Java Design Pattern: Command) 命令设计模式在进行执行和记录的时候需要一个操作及其参数和封装在一个对象里面.在下面的例子中,命令是一个操作,它的参数是一个Computer,而且他们被封装在一个Switch中. 从另外一个视角来看,命令模式有四个部分:command,recevier,invoker和client.在这个例子中,Switch是invoker,Computer是receiver.一个具体的Command需要一个receiver对象而且调用rec…