【Design Patterns】
文章平均质量分 75
AlphaWang
这个作者很懒,什么都没留下…
展开
-
【设计模式】8. 策略模式
定义Define a family of algorithms, encapsulate each one, and make them interchangeable.定义一组算法,将每个算法封装起来,并且使他们之间可以互换。类图Strategy:抽象策略角色策略、算法家族的抽象,通常为接口。定义每个算法必须具有的方法和属性。public interf原创 2013-04-18 21:18:57 · 1223 阅读 · 0 评论 -
【设计模式】5. 单例模式(以及多线程、无序写入、volatile对单例的影响)
单例模式http://www.ibm.com/developerworks/cn/java/j-dcl.html定义: Ensure a class has only one instance, and provide a global point of access to it. 确保某个类只有一个实例,并提供一个全局访问点。类图:原创 2013-03-23 17:03:55 · 4778 阅读 · 2 评论 -
【六大设计原则】6. 开闭原则 -Open Closed Principle
Open Closed Principle:Software entities like classes, modules and functions should be open for extension but closed for modifications.对扩展开放,对修改关闭。一个软件实体应该通过扩展来实现变化,而不是通过修改已有代码来实现变化。一个软件实体应该通过扩原创 2012-12-31 16:14:18 · 1920 阅读 · 0 评论 -
【设计模式】9. 迭代器模式
引子例如Waitress类要遍历打印两种菜单,一种是基于ArrayList,一种是基于数组;则Waitress需要对他们分别用两个不同的逻辑来遍历。定义Provide a way to access the elements of an aggregate object sequentially without exposing its underlying represe原创 2013-04-21 18:32:47 · 1225 阅读 · 0 评论 -
【设计模式】1. 适配器模式、外观模式
适配器模式(Adapter Pattern)定义: Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn't otherwise because of incompatible原创 2013-01-27 15:27:06 · 1884 阅读 · 0 评论 -
【设计模式】2. 观察者模式
定义: Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. 定义了对象之间的一对多依赖(一个主题,多个观察者),这样原创 2013-02-02 20:59:20 · 1454 阅读 · 0 评论 -
【设计模式】4. 工厂方法模式、抽象工厂模式
简单工厂简单工厂不是一个设计模式,而是一种编程习惯。使用场景:当客户端需要实例化一个类,但究竟实例化哪个类,要在运行时由一些条件来决定。找出变化的方面(实例化哪个类),把他们从不变的部分分离出来,交由“简单工厂”完成。 public class PizzaStore{ SimplePizzaFactory factory; Public PizzaS原创 2013-03-10 21:53:43 · 1504 阅读 · 0 评论 -
【设计模式】6. 命令模式
定义Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.将请求封装成对象,以便使用不同的请求、队列、或日志将客户端参数化,同时提供原创 2013-03-30 14:53:43 · 1202 阅读 · 0 评论 -
【设计模式】12. 代理模式
定义 Proxy pattern provide a surrogate or placeholder for another object to control access to it.代理模式为其他对象提供一个(替身)或(占位符)以控制对这个对象的访问。所谓控制访问,例如:远程代理控制访问远程对象虚拟代理控制访问创建开销大的对象保护代理基于权限控制对资源的访原创 2013-06-12 20:45:41 · 2557 阅读 · 1 评论 -
【六大设计原则】1. 单一职责原则 -Single Responsibility Principle
SRP,Single Responsibility Principle:There should never be more than one reason for a class to change.应该有且仅有一个原因引起类的变更。(如果类需要变更,那么只可能仅由某一个原因引起)问题由来: 类T负责两个不同的职责:职责P1,职责P2。当由于职责P1原创 2012-12-29 16:31:46 · 2404 阅读 · 1 评论 -
【六大设计原则】2. 里氏替换原则 -Liskov Substitution Principle
LSP,Liskov Substitution Principle:1) If for each object s of type S, there is an objectt of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when s is substi原创 2012-12-31 08:08:45 · 2060 阅读 · 0 评论 -
【设计模式】3. 装饰者模式
定义: Attach additional responsibilities to an object dynamically keeping the same interface. Decorators provide a flexible alternative to subclassing for extending functionality. 动态地将原创 2013-02-12 13:51:48 · 2620 阅读 · 0 评论 -
【设计模式】10. 组合模式
引子考虑这么一个场景:需要某种树形结构来容纳菜单、子菜单、菜单项;并能在每个菜单的每个项之间游走;定义Composite Pattern (又叫 部分-整体模式,Part-Whole),composite objects into tree structures to represent part-whole hierarchies. Composite lets原创 2013-04-29 18:05:47 · 1333 阅读 · 0 评论 -
【设计模式】11. 状态模式
引子考虑模拟一个电梯类,实现其open()行为时,需要首先判断电梯当前处于什么状态,如果是stop状态,可以开门;如果是running状态,则不允许开门。——因为电梯可能有多个状态,导致其行为方法中出现了很多条件判断逻辑定义Allow an object to alter its behavior when its internal state changes. The原创 2013-05-12 17:21:20 · 1383 阅读 · 0 评论 -
【六大设计原则】5. 迪米特法则 -Law of Demeter
LoD,Law of Demeter:又称最少知识原则(Least Knowledge Principle),一个对象应该对其他对象有最少的了解一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。问题由来: 类与类之间的关系越密切,耦合度越大原创 2012-12-31 08:13:23 · 6870 阅读 · 0 评论 -
【六大设计原则】3. 依赖倒置原则 -Dependence Inversion Principle:
DIP,Dependence Inversion Principle:High level modules should not depend upon low level modules. Both should depend upon abstractions.Abstractions should not depend upon details. Details should d原创 2012-12-31 08:10:58 · 1688 阅读 · 0 评论 -
【六大设计原则】4. 接口隔离原则 -Interface Segregation Principle
Interface Segregation Principle:Clients should not be forced to depend upon interfaces that they don't use.——客户端只依赖于它所需要的接口;它需要什么接口就提供什么接口,把不需要的接口剔除掉。The dependency of one class to another one s原创 2012-12-31 08:12:27 · 1559 阅读 · 0 评论 -
【设计模式】7. 模板方法模式 -封装算法
引子例如有两个处理逻辑:泡茶、冲咖啡;他们的基本流程(算法)是相同的:煮开水、冲泡、倒进杯子、加入调料。只不过具体到个别步骤可能有差异。如果分成两个类来实现,就会存在重复代码。——可以将公共的部分(算法)提到父类中;由各个子类实现每个具体步骤。定义Define the skeleton of an algorithm in an operation, def原创 2013-04-04 21:24:05 · 1434 阅读 · 0 评论 -
【设计模式】Builder模式
定义Separate the construction of a complex object from its representation so that the same construction process can create different representations.将复杂对象的创建过程与该对象的表示分离开来,以便让同一个创建过程可以创建出不同的表示。类图原创 2013-11-17 16:26:08 · 3485 阅读 · 0 评论