我正在阅读 Fowler 的“重构”,第 1 章。
在第 51 页上,您会看到一部附有价格等级的电影。第一种方法是:使用继承创建多个电影,每个电影都使用其独特的 getCharge 方法来计算价格。在第 38 页,这种方法被放弃了,因为它太静态了——改变电影的分类太难了。但是,在第 51 页上再次使用了继承,这一次是为了价格。添加了三个价格子类:ChildrensPrice、NewReleasesPrice 和 RegularPrice。在这种设计中,通过更改价格对象来更改电影的分类更容易。但是在这里添加新的价格类别涉及添加一个新的类。
拥有一个基于接口或带有名称字段的抽象类的价格类不是更容易吗,所以名称可以是“ChildrensPrice”,您可以定义您想要的任何其他价格类别,而无需编写新类?
这是一个带有名称的重构模式,例如:“将硬编码的类更改为更动态的表示”?
这种方法的优缺点是什么?