`
squall
  • 浏览: 46484 次
  • 性别: Icon_minigender_1
  • 来自: wuhan
社区版块
存档分类
最新评论

Refactoring 笔记 - 对第一个案例的再重构

 
阅读更多
案例中 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.pdf

    Refactoring2-free-chapter_cn

    Refactoring--Improving the Design of Existing Code(重构,英文清晰版,带完整书签)

    1. 重构的定义和目的:重构是一种系统性的方法,用于在不改变软件外部行为的前提下,对代码的内部结构进行优化和调整,目的是提高代码的可读性、可维护性和可扩展性。 2. 重构的时机和重要性:重构不是一开始就进行...

    重构(Refactoring)英文版

    通过对这些案例的研究,读者可以更好地理解重构的实际操作方法,并将其应用到自己的项目中。 #### 七、重构与设计模式的关系 重构与设计模式之间存在着紧密的联系。设计模式提供了一套经过验证的解决方案集,而...

    Refactoring-to-pattern

    - **重构定义**:重构是一种对现有代码进行修改的技术,目的是在不改变其外部行为的前提下改善其内部结构。通过重构可以消除代码中的“坏味道”(如重复代码、过长的方法等),使得代码更加清晰、简洁。 - **...

    book-refactoring2-code:《重构 改善既有代码的设计第二版》中示例代码

    存储 《重构: 改善既有代码的设计第二版》的一些示例代码 单元测试 使用 作为我们单元测试套件 运行所有单元测试: npm run test 运行某个单元测试: npx mocha ./src/chapter1/*.test.js 变化 提炼函数 amountFor ...

    Refactoring-Presentation-from-JavaOne

    重构(Refactoring)是指在不改变软件外部行为的前提下,对软件内部结构进行修改的一种方法。其核心目标是提高代码的质量、可读性和可维护性。重构可以帮助开发者更轻松地理解和维护代码,并减少未来的修改成本。 ...

    refactoring-to-patterns-notes:重构-向范式前进(重构为模式)的学习笔记

    标签中的“refactoring”强调了重构在软件开发中的重要地位,而“design-patterns”则提醒我们,设计模式是软件工程中不可或缺的一部分。这两个主题的结合,使得《重构-向范式前进》成为提升开发者技能和代码质量的...

    refactoring-sql-applications

    《重构 SQL 应用程序》是一本由 Stéphane Faroult 和 Pascal L’Hermite 联合编写的书籍,该书深入探讨了在实际项目中如何有效地对 SQL 数据库应用程序进行重构。通过本书的学习,读者将能够掌握一系列实用的技术和...

    vim-php-refactoring-toolbox:VIM Php重构工具箱

    VIMPHP重构工具箱重命名局部变量重命名类变量重命名方法提取用途提取常量提取类属性提取方法建立财产检测未使用的使用声明对齐分配创建setter和getter 记录所有代码安装 : Plug 'adoy/vim-php-refactoring-...

    Python库 | JoeLiu_RF_Refactoring-1.0.2-py3-none-any.whl

    这个特定的库可能包含了对机器学习或自动化测试中RF(Robot Framework)的改进和重构。 描述部分提到,这是一个Python库,解压后即可使用。这表明它是一个经过打包的Python软件包,采用了whl(wheel)格式。Wheel是...

    重构 学习笔记 refactoring martin fowler

    重构是软件开发过程中的一个重要环节,它涉及到对现有代码的改进,目的是为了提高代码的可读性、可维护性和设计质量,而不改变其外部行为。本文主要围绕重构的关键概念、原则、时机以及面临的挑战展开讨论。 首先,...

    Refactoring-重构_改善既有代码的设计

    Refactoring-重构_改善既有代码的设计

    java笔试题算法-refactoring-to-streams:重构到流

    java笔试题算法重构到流 了解如何在 Java 8 Streams 中表达您的算法。 练习和解决方案由并在他们的 . 再次出现在 描述 并在 Java 8 中引入,让程序员可以访问一些高级功能抽象。 在本练习中,我们将了解如何重构命令...

    Professional-Refactoring-Workbook

    重构是软件开发过程中的一个重要环节,它涉及到在不改变软件外在行为的前提下,改进其内部结构,使得代码更易读、更易理解、更易维护。这本书详细探讨了重构的实践技巧和策略,对提高代码质量具有深远影响。 本书的...

    refactoring-cases:重构案例

    重构案例此示例展示了如何将提取后剩余的许多小型私有方法放置到您删除(直到提取方法无法执行)到不同的类中以用于它们的角色。 Extract until you drop 可以在和上详细查看。1. 头等舱 package abstract_till_you_...

    refactoring-workshop-slides-sep-2015:重构研讨会幻灯片

    1. **提取函数**:当一个函数或方法变得过于庞大时,可以将其拆分为更小、更专注的函数,以提高代码的可读性和复用性。 2. **引入参数对象**:如果一个函数接收过多的参数,可以创建一个对象来封装这些参数,减少...

    31天重构指南--代码重构(refactoring)

    ### 31天重构指南——代码重构(Refactoring) #### 一、代码重构的基本概念 代码重构是指在不改变程序外部行为的前提下,对其内部结构进行调整的过程。这一做法旨在提高程序的质量,包括但不限于提高代码的可读性...

    Refactoring To Patterns《重构与模式》英文版

    - **第一部分:理论基础** - 理解重构与设计模式的关系 - 设计模式的基础知识 - 重构的基本原理 - **第二部分:设计模式嗅觉** - 十二种常见的设计“臭味”识别 - 针对每种“臭味”的重构策略 - **第三部分:...

Global site tag (gtag.js) - Google Analytics