摘要: 策略模式:定义一系列的算法,把他们一个个封装起来,并使他们可以互相替换,本模式使得算法可以独立于使用它们的客户。抽象策略角色:通常用一个抽象类或者接口来实现,主要是定义这个算法所完成的功能具体策略角色:包装了相关算法和行为环境角色:持有策略类的引用使用场景:1) 如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态的让一个对象在许多行为中选择一种行为。2) 如果系统需要动态地在几种算法中选择一种。那么这些算法可以包装到一个个的具体算法类里面,而这些算法类都是一个抽象算法类的子类。换言之,这些具体算法类均有统一的接口,由于多态性原则。客户端可以选择使用任何一个具. 阅读全文
posted @ 2012-09-12 15:15 何长春 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 状态模式:允许对象在其内部状态改变时改变他的行为。对象看起来似乎改变了他的类。1. 策略模式和状态模式是双胞胎,它们有相同的类图,但是它们的意图不同。策略模式是围绕可以互换的算法来成功创建业务的,然而状态模式是通过改变对象内部的状态来帮助对象控制自己的行为.2. Context将与状态相关的操作委托给当前的Concrete State对象处理。3. Context可将自身作为一个参数传递给处理该请求的状态对象。这使得状态对象在必要时可访问Context。4. Context或Concrete State类都可决定哪个状态是另外哪一个的后继者,以及是在何种条件下进行状态转换。也就是说可以在Sta 阅读全文
posted @ 2012-09-12 12:01 何长春 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 命令模式:将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队和记录请求日志,以及支持可撤销的操作。Command: 定义命令的接口,声明执行的方法。ConcreteCommand: 命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。Receiver: 接收者,真正执行命令的对象。任何类都可能成为一个接收者,只要它能够实现命令要求实现的相应功能。Invoker: 要求命令对象执行请求,通常会持有命令对象,可以持有很多的命令对象。这个是客户... 阅读全文
posted @ 2012-09-12 11:20 何长春 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即可以重定义该算法得某些特定步骤。方法模式的特点:把不变的行为搬到超类,去除子类中重复的代码来体现他的优势。应用场景:需要定义一些顶级逻辑 或者是一个操作中算法的骨架,希望一些步奏的执行推迟到其子类中时 应该考虑模板模式。例如:考虑一个计算存款利息的例子。假设系统需要支持两种存款账号,即货币市场(Money Market)账号和定期存款(Certificate of Deposite)账号。这两种账号的存款利息是不同的,因此,在计算一个存户的存款利息额时,必须区分两种不同 阅读全文
posted @ 2012-09-12 10:28 何长春 阅读(164) 评论(0) 推荐(0) 编辑