DesignPatterns
文章平均质量分 61
Xlongshu
原博客 http://blog.csdn.net/u014335219
展开
-
24.Interpreter-解释器模式
Interpreter 解释器模式解释器模式: 定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。 解释器模式是一种类行为型模式。 由于表达式可分为终结符表达式和非终结符表达式, 因此解释器模式的结构与组合模式的结构有些类似,但在解释器模式中包含更多的组成元素。结构图: 示例类图: 示例代码:// Express原创 2017-05-10 09:54:25 · 911 阅读 · 0 评论 -
9.Proxy-代理模式
Proxy 代理模式代理模式: 给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。 在某些情况下,一个客户不想或者不能直接引用一个对象,此时可以通过一个称之为“代理”的第三者来实现间接引用。 代理对象可以在客户端和目标对象之间起到中介的作用,并且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务。代理模式分为静态代理、动态代理。 静态代理是由程原创 2017-05-10 09:53:21 · 1110 阅读 · 0 评论 -
8.Decorator-装饰模式
Decorator 装饰模式装饰模式: 装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。 就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能。它主要是解决: “过度原创 2017-05-10 09:53:17 · 802 阅读 · 0 评论 -
10.Facade-外观模式
Facade 外观模式外观模式: 是软件工程中常用的一种软件设计模式,它为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用。 外观模式是为了解决类与类之间的依赖关系的,就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中一般不涉及到接口。示例类图: 示例代码:// SubSystempublic class CPU { publi原创 2017-05-10 09:53:25 · 925 阅读 · 0 评论 -
7.Adapter-适配器模式
Adapter 适配器模式适配器: 也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。 一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。 类适配器是通过类的继承实现的适配; 对象适配器是通过对象间的关联关系,组合关系实现的适配; 接口适配器原创 2017-05-10 09:53:13 · 917 阅读 · 0 评论 -
6.Prototype-原型模式
Prototype 原型模式原型模式: 原型模式是创建型模式的一种,其特点在于通过「复制」一个已经存在的实例来返回 新的实例,而不是新建实例。被复制的实例就是我们所称的「原型」,这个原型是可 定制的。 原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在 的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。示例类图: 示例代码:// P原创 2017-05-10 09:53:09 · 1059 阅读 · 0 评论 -
5.Builder-建造者模式
Builder 建造者模式建造者模式: 建造者模式主要是用于创建一些复杂的对象,这些对象内部构建间的建造顺序是稳 定的,但是对象内部的构建通常面临着复杂的变化。 好处就是使得建造代码与表示代码分离,由于建造者隐藏了改产品是 如何组装的,所以若需要改变一个产品的内部表示,只需要再定义一个具体的建造 者就可以了。与抽象工厂的区别: 在建造者模式里,有个指导者,由指导者来管理建造者,原创 2017-05-10 09:53:05 · 779 阅读 · 0 评论 -
3.AbstractFactory-抽象工厂模式
Abstract Factory 抽象工厂模式抽象工厂模式: 也称为Kit模式,它和工厂方法模式的区别就在于需要创建对象的复杂程度上。而且抽象工厂模式是三个里面最为抽象,最具一般性的。 抽象工厂模式的用意为:给客户端提供一个接口,可以创建多个产品族中的产品对象。 抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品等级结构, 而抽象工厂模式需要面对多个产原创 2017-05-10 09:52:56 · 798 阅读 · 0 评论 -
2.FactoryMethod-工厂方法模式
Factory Method 工厂方法模式工厂方法模式:核心,定义一个创建对象的接口/抽象类,让子类来决定实例化哪一个类,使实例化延迟到子类。 当有新的产品产生时,只要按照产品接口和工厂接口来生成,就可以被客户端使用,而不必改码. 所以工厂方法模式是完全符合开闭原则的。工厂方法克服了简单工厂违背开放封闭原则的缺点,又保持了封装对象创建过程的优点。 降低了客户程序和产品对象之间的耦原创 2017-05-10 09:52:50 · 906 阅读 · 0 评论 -
1.SimpleFactory-简单(静态)工厂模式
Simple Factory 简单(静态)工厂模式简单工厂模式: 含有一定的商业逻辑和判断逻辑,根据逻辑不同,产生具体的工厂产品,对于客户端去除了对具体产品的依赖. 对产品来说它是符合开闭原则的——对扩展开放,对修改关闭; 但是每增加一个产品,都要在工厂类中增加相应的商业逻辑和判 断逻辑,这显自然是违背开闭原则.示例类图: 示例代码:// 产品public interfa原创 2017-05-10 09:52:46 · 854 阅读 · 0 评论 -
Java中的23种设计模式与7大原则
Java中的23种设计模式与7大原则创建型模式 5抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类.生成器模式(Builder pattern): 使用生成器模式封装一个产品的构造过程, 并允许按步骤构造. 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示.工厂模式(fac原创 2017-05-10 09:52:33 · 931 阅读 · 0 评论 -
11.Composite-组合模式
Composite 组合模式组合模式: 允许你将对象组合成树形结构来表现”整体-部分”层次结构. 组合能让客户以一致的方式处理个别对象以及对象组合。 组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性。 组合模式又可以称为 整体—部分(Part-Whole)模式,它是一种对象结构型模式。它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念, 客户程序可原创 2017-05-10 09:53:29 · 1066 阅读 · 0 评论 -
12.Bridge-桥接模式
Bridge 桥接模式桥接模式: 桥接模式把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。 又称为柄体(Handle and Body)模式或接口(Interface)模式。 事物对象仅是一个抽象的概念。 用意就在将抽象化与实现化解耦,使得二者可以独立变化。动机 当一种抽象类型可能有多种实现方式时,一般情况我们可以考虑使用继承来解决抽象类型的多种实现,在抽象类原创 2017-05-10 09:53:33 · 885 阅读 · 0 评论 -
23.Mediator-中介者模式
Mediator 中介者模式中介模式: 用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散, 而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,它是一种对象行为型模式。结构图: 示例类图: 示例代码:public interface Mediator { public abstract void w原创 2017-05-10 09:54:21 · 928 阅读 · 0 评论 -
22.Visitor-访问者模式
Visitor 访问者模式Visitor模式: 提供一个作用于某对象结构中的各元素的操作表示,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 访问者模式是一种将算法与对象结构分离的软件设计模式。访问者模式是一种对象行为型模式。结构图: 示例类图: 示例代码:// Visitorpublic interface ComputerPartVisito原创 2017-05-10 09:54:16 · 947 阅读 · 0 评论 -
21.State-状态模式
State 状态模式状态模式: 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。结构图: 示例类图: 示例代码:public interface State { public void handle();}public class Start原创 2017-05-10 09:54:13 · 964 阅读 · 0 评论 -
20.Memento-备忘录模式
Memento 备忘录模式备忘录模式: 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态, 这样可以在以后将对象恢复到原先保存的状态。它是一种对象行为型模式,其别名为Token。结构图: 示例类图: 示例代码:public class Originator { private String state; public void原创 2017-05-10 09:54:08 · 885 阅读 · 0 评论 -
19.Command-命令模式
Command 命令模式命令模式: 将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化; 对请求排队或者记录请求日志,以及支持可撤销的操作。 命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。结构图: 示例类图: 示例代码:// Commandpublic interface Command {原创 2017-05-10 09:54:04 · 1407 阅读 · 0 评论 -
18.ChainOfResponsibility-职责链模式
Chain Of Responsibility 职责链模式职责链模式: 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系, 将这个对象连成一条链,并沿着个链传递请求,直到有一个对象处理为止。 发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。使用场景:有多个的对象可以处理一个请求,哪原创 2017-05-10 09:54:00 · 904 阅读 · 0 评论 -
16.Observer-观察者模式
Observer 观察者模式观察者模式: 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。 这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。观察者模式是一种对象行为型模式。观察者模式的别名包括: 发布-订阅(Publish/Subscribe)模式, 模型-视图(Model/View)模式, 源-监听器(Source/Lis原创 2017-05-10 09:53:56 · 951 阅读 · 0 评论 -
17.Iterator-迭代器模式
Iterator 迭代器模式迭代器模式: 提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。迭代器模式是一种对象行为型模式。 迭代器模式就是顺序访问聚集中的对象,一般来说,集合中非常常见,如果对集合类比较熟悉的话,理解本模式会十分轻松。 这句话包含两层意思:一是需要遍历的对象,即聚集对象,二是迭代器对象,用于对聚集对象进行遍历访问.示例类图:原创 2017-05-10 09:53:49 · 970 阅读 · 0 评论 -
15.TemplateMethod-模板方法模式
TemplateMethod 模板方法模式模板方法模式: 定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式。 模板方法模式是结构最简单的行为型设计模式,在其结构中只存在父类与子类之间的继承关系。 通过使用模板方法模式,可以将一些复原创 2017-05-10 09:53:45 · 835 阅读 · 0 评论 -
14.Strategy-策略模式
Strategy 策略模式策略模式: 也称为政策模式(Policy)。策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。 这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有算法, 减少各种算法类与使用类之间的耦合。策略模式是一种对象行为型模式。结构图: 示例类图: 示例代码:// Strat原创 2017-05-10 09:53:41 · 901 阅读 · 0 评论 -
13.Flyweight-享元模式
Flyweight 享元模式享元模式模式: 享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销, 意图在于运用共享技术有效地支持大量细粒度的对象。 由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。 通常与工厂模式一起使用。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;原创 2017-05-10 09:53:37 · 810 阅读 · 0 评论 -
什么是高内聚、低耦合
什么是高内聚、低耦合? 起因:模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单,两个定性的度量标准――耦合性和内聚性。耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。耦合性分类(低――高):无直接原创 2017-05-10 09:52:42 · 1065 阅读 · 0 评论