摘要: 概括以一个临时变量保存某一个表达式的运算结果。将这个表达式提炼到一个独立函数汇总。将这个临时变量的所有引用点替换为对新函数的调用。此后,新函数就可被其它函数使用。 例子double basePrice = _quantity * _itemPrice;if(basePrice > 1000) return basePrice*0.95;else return basePrice*0.5;重构... 阅读全文
posted @ 2013-11-27 13:45 tanhaiyuan 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 概括一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其他重构方法。将所有对该变量的引用替换为对它赋值的那个表达式本身。 例子double basePrice = anOrder.basePrice();return (basePrice > 1000)重构之后return (anOrder.basePrice() > 1000)动机Iniline Temp多半是作为Replace Temp ... 阅读全文
posted @ 2013-11-27 10:39 tanhaiyuan 阅读(441) 评论(0) 推荐(0) 编辑
摘要: 概括一个函数的内部代码与名称同样清晰易懂。在函数调用点插入函数本体,然后移除该函数。 例子int getRating(){ return (moreThanFiveLateDeliveries()) ? 2 : 1;}boolean moreThanFiveLateDeliveries(){ return _numberOfLateDeliveries > 5;} 重构之后int getR... 阅读全文
posted @ 2013-11-27 10:38 tanhaiyuan 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 概括有一段代码可以被组织在一起并独立出来。将这段代码放进一个独立函数中,并让函数名称解释该函数的用途。 例子voidprintOwing(doubleamount){ printBanner();//print details System.out.println("name:"+_name); System.out.println("amount:"+amount);} 重构之后... 阅读全文
posted @ 2013-11-27 10:18 tanhaiyuan 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 策略模式&状态模式策略模式类图状态模式类图 类图是一样的。但是这两个模式的差别在于它们的意图。 状态模式中,我们将一些行为封装在状态对象中,context的行为随时可以委托到那些状态对象中的一个。context的内部状态在状态对象集合范围内变化,context的行为也会随着内部状态变化而变化。但是context的客户端对于状态对象的了解不多,甚至完全不了解。 策略模式,客... 阅读全文
posted @ 2013-11-26 13:24 tanhaiyuan 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 意图定义一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。应用场景uu类图参与者AbstractClass定义抽象的原语(PrimitiveOperation),具体的子类将重定义它们以实现一个算法的各步骤实现一个模板方法,定义一个算法骨架。该模板方法不仅调用原语操作,也调用定义在AbstractClass或其他对象中的操作。Concr... 阅读全文
posted @ 2013-11-25 11:14 tanhaiyuan 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 意图允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。应用场景uu类图参与者Context定义客户感兴趣的接口维护一个ConcreteState子类的实例,这个实例定义当前状态State(状态)定义一个接口以封装与Context的一个特定状态相关的行为ConcreteState每一个具体类实现一个与Context的一个状态相关的行为代码//有错误,c++不能在同一个文件中定义... 阅读全文
posted @ 2013-11-21 16:35 tanhaiyuan 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 意图在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。应用场景uu类图参与者Memento(备忘录)存储Originator对象的内部状态,Originator根据需要决定备忘录存储哪些内部状态防止Originator以外的其他对象访问备忘录。Caretaker只能将备忘录传递给其他对象。允许Originator访问恢复到以前状态... 阅读全文
posted @ 2013-11-21 14:19 tanhaiyuan 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 意图提供一种方法顺序访问一个聚合对象中各个元素 , 而又不需暴露该对象的内部表示。应用场景uu类图参与者uu代码uu来自为知笔记(Wiz) 阅读全文
posted @ 2013-11-20 16:40 tanhaiyuan 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 意图给定一个语言,定义她的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。应用场景uu类图参与者AbstractExpressionTerminalExpressionNoterminalExpressionContextClient代码#include #include using namesapce std;class Context{private: string ... 阅读全文
posted @ 2013-11-20 15:58 tanhaiyuan 阅读(126) 评论(0) 推荐(0) 编辑