用户要求增加一种用HTML输出清单的方式

经过重构，我们已经可以很简单的复用Statement()内的计算来实现HTML版本了
Rental类的Charge属性应当移入Movie类中

最好不要在另一个对象的属性基础上运用switch语句，如果不得不使用switch，应该在对象自己的数据上使用。
本例中，这暗示着Charge应该移到Movie中去。
为什么是将daysRented传给Movie，而不是将priceCode（影片类型）传入Rental呢？

因为客户准备修改影片分类规则，系统变化的是加入新影片类型，这种变化有不稳定倾向。如果影片类型有所变化，我们希望尽量控制它造成的影响，所以选择在Movie对象内计算费用
消除旧方法
用同样的手法处理FrequentRenterPoint
消除获取常客积分方法内的临时变量
为了能够运用多态消除switch，我们用到了继承

我们从Movie继承出三种不同类型电影的子类，希望每个类型的电影实例的GetCharge有自己的实现。
否决上一次提交的方案

由于影片的类型可以变化，所以我们无法用Movie的多态。但我们可以应用State/Strategy模式(GoF)
为了让编译通过，删除了原来的三个Movie子类
为Price增加一个抽象函数，并在所有子类上加上对应的具体函数

为了能够让Price提供类型相关的行为。
重构Movie，修改PriceCode属性，使其使用新加的Price类
移动GetCharge方法到Price类
利用多态替换条件 - 删除第一个case并用子类重新覆盖

测试通过
利用多态替换条件 - 删除第二个case并用子类重新覆盖
利用多态替换条件 - 删除第三个case并用子类重新覆盖
消除分支后，将Price的GetCharge改为抽象方法。
用同样的手法处理常客积分 - 方法移动
用同样的手法处理常客积分 - 删除第一个分支并用子类重新覆盖

保留了父类中的默认实现