一部影片可以在生命周期内修改自己的分类,一个对象缺不能在生命周期内修改自己所属的类 --- 怎样理解呢?
比如 Movie newReleaseMovie= new NewReleaseMovie();
此时 newReleaseMovie 的type 是 new released
newReleaseMovie.getName() = "饥饿游戏3";
对象创建之后任何时候调用getCharge 都是 调用NewReleaseMovie 的 getcharge() 方法。
但是上映一段时间之后 影片的type 改成了 regular movie了,但是影片还是那个影片,即实例化的对象没有变。
实例化的对象没有变,getcharge() 就不变,这样就出现了问题。
如果把movie 改成 car,方法是 calculateOilWear(), 子类为卡车,小汽车,客车,那么这种集成体系就没有问题,因为 小汽车不会变成卡车
这种在运行期改变了行为的对象是怎样解决的呢?
如下图,movie 中 加入了price 成员变量,在setprice 时加入type 属性,根据不同的type 属性创建不同的price 子对象,这样就达到了运行期改变行为的目的。