我正在使用第三方框架,该框架提供了一个实例只有属性的类。在我的应用程序中,我想为此实例添加一个额外的属性。对于这种情况,执行此操作的适当方法是什么?
a) 在我的应用程序中扩展框架的类
b)创建框架类的子类并定义我需要的新属性
提前致谢
我正在使用第三方框架,该框架提供了一个实例只有属性的类。在我的应用程序中,我想为此实例添加一个额外的属性。对于这种情况,执行此操作的适当方法是什么?
a) 在我的应用程序中扩展框架的类
b)创建框架类的子类并定义我需要的新属性
提前致谢
它是
b)
因为不支持在类扩展中添加(存储)属性。
使用扩展有两个重要的规则:
扩展可以为类型添加新功能,但不能覆盖现有功能
扩展可以添加新的计算属性,但它们不能添加存储的属性,或者向现有属性添加属性观察者
这取决于您期望实现的行为。
扩展:您只能添加新方法和计算变量,但您将在代码中实现无缝工作。无需在代码中添加新类即可在任何地方使用新功能
子类化:您可以添加新的变量和覆盖函数,但代码中的占用空间更大。您将需要在整个项目中使用该特定子类。
我想这更像是一个设计问题。
我的建议:如果整个项目需要这种新行为,请使用extensions,否则使用subclass。