需要为服务类提供一些额外函数,但你无法修改这个类。
建立一个新类,使它包含这些额外函数。让这个扩展品成文源类的子类或包装类。
动机:
所谓本地扩展是一个独立的类,但也是被扩展类的子类型:它提供源类的一切特性,同时额外添加新特性。在任何使用源类的地方,都可以使用本地扩展取而代之。
如果有其他对象引用了就对象,就同时有两个对象保存了原数据。
做法:
建立一个扩展类,将它作为原始类的子类或包装类。
在扩展类中加入转型构造函数。
=》所谓“转型构造函数”是指“接受原对象作为参数”的构造函数。如果采用子类化方案,那么转型构造函数应该调用适当的超类构造函数;如果采用包装类方案,那么转型构造函数应该将它得到的传入参数以实例变量的形式保存起来,用作接受委托的原对象。
子类化方案中不要覆写函数。