案例中 Movie 的 setPriceCode 方法还是存在着 case 语句,站在代码美学的角度上来讲这显然是不可容忍的,而且对以后的扩展也不是很方便。比如现在要加一种 Price 策略需要修改哪些地方?首先加入一个 Price subclass,那个 case 是肯定要修改的,还要加一个 priceCode 常量,好麻烦,即然都 Strategy 了,那就 Stragegy 到底。
把所有的 Price subclass 的 getProceCode 方法里面返回自已所代表的ProceCode
public class ChildrensPrice extends Price {
public int getPriceCode() {
return 2;
}
}
public class NewReleasePrice extends Price {
public int getPriceCode() {
return 1;
}
}
public class RegularPrice extends Price {
public int getPriceCode() {
return 0;
}
}
修改 Movie 中常量定义为
public final static Price REGULAR = new RegularPrice();
public final static Price CHILDRENS = new ChildrensPrice();
public final static Price NEW_RELEASE = new NewReleasePrice();
修改 Movie 的构造方法为,注意:这里修改了对外的接口,除非能做到不用修改客户端程序,否则在实际项目中要酌情处理
public Movie(String name, Price price) {
_title = name;
_price = price;
}
这样 setPriceCode 就没用了,干掉,现在程序看起来爽多了
run 你的测式
done......
分享到:
相关推荐
Refactoring2-free-chapter_cn
1. 重构的定义和目的:重构是一种系统性的方法,用于在不改变软件外部行为的前提下,对代码的内部结构进行优化和调整,目的是提高代码的可读性、可维护性和可扩展性。 2. 重构的时机和重要性:重构不是一开始就进行...
通过对这些案例的研究,读者可以更好地理解重构的实际操作方法,并将其应用到自己的项目中。 #### 七、重构与设计模式的关系 重构与设计模式之间存在着紧密的联系。设计模式提供了一套经过验证的解决方案集,而...
重构(Refactoring)是指在不改变软件外部行为的前提下,对软件内部结构进行修改的一种方法。其核心目标是提高代码的质量、可读性和可维护性。重构可以帮助开发者更轻松地理解和维护代码,并减少未来的修改成本。 ...
- **重构定义**:重构是一种对现有代码进行修改的技术,目的是在不改变其外部行为的前提下改善其内部结构。通过重构可以消除代码中的“坏味道”(如重复代码、过长的方法等),使得代码更加清晰、简洁。 - **...
存储 《重构: 改善既有代码的设计第二版》的一些示例代码 单元测试 使用 作为我们单元测试套件 运行所有单元测试: npm run test 运行某个单元测试: npx mocha ./src/chapter1/*.test.js 变化 提炼函数 amountFor ...
标签中的“refactoring”强调了重构在软件开发中的重要地位,而“design-patterns”则提醒我们,设计模式是软件工程中不可或缺的一部分。这两个主题的结合,使得《重构-向范式前进》成为提升开发者技能和代码质量的...
VIMPHP重构工具箱重命名局部变量重命名类变量重命名方法提取用途提取常量提取类属性提取方法建立财产检测未使用的使用声明对齐分配创建setter和getter 记录所有代码安装 : Plug 'adoy/vim-php-refactoring-...
这个特定的库可能包含了对机器学习或自动化测试中RF(Robot Framework)的改进和重构。 描述部分提到,这是一个Python库,解压后即可使用。这表明它是一个经过打包的Python软件包,采用了whl(wheel)格式。Wheel是...
重构是软件开发过程中的一个重要环节,它涉及到对现有代码的改进,目的是为了提高代码的可读性、可维护性和设计质量,而不改变其外部行为。本文主要围绕重构的关键概念、原则、时机以及面临的挑战展开讨论。 首先,...
Refactoring-重构_改善既有代码的设计
java笔试题算法重构到流 了解如何在 Java 8 Streams 中表达您的算法。 练习和解决方案由并在他们的 . 再次出现在 描述 并在 Java 8 中引入,让程序员可以访问一些高级功能抽象。 在本练习中,我们将了解如何重构命令...
重构是软件开发过程中的一个重要环节,它涉及到在不改变软件外在行为的前提下,改进其内部结构,使得代码更易读、更易理解、更易维护。这本书详细探讨了重构的实践技巧和策略,对提高代码质量具有深远影响。 本书的...
重构案例此示例展示了如何将提取后剩余的许多小型私有方法放置到您删除(直到提取方法无法执行)到不同的类中以用于它们的角色。 Extract until you drop 可以在和上详细查看。1. 头等舱 package abstract_till_you_...
1. **提取函数**:当一个函数或方法变得过于庞大时,可以将其拆分为更小、更专注的函数,以提高代码的可读性和复用性。 2. **引入参数对象**:如果一个函数接收过多的参数,可以创建一个对象来封装这些参数,减少...
《Refactoring UI》是一本由Adam Wathan和Steve Schoger合著的设计书,主要面向开发者,帮助他们在不具备专业设计背景的情况下也能提升UI设计的质量。这本书提供了实用的设计建议和技巧,帮助开发者在日常工作中更好...
书中不仅介绍了重构的基本概念和重要性,还提供了一系列具体的重构案例和技术建议。 ### 重构的方法与技巧 书中详细介绍了一系列重构技巧,共计超过70种不同的重构方式,每种都配有“之前”与“之后”的代码示例...