我使用的是第三方框架,它提供了一个实例只有属性的类。在我的应用程序中,我想为这个实例添加一个额外的属性。对于这种情况,适当的方法是什么?
a)在我的应用程序中扩展框架的类
b)创建框架类的子类并定义我需要的新属性
提前致谢
答案 0 :(得分:11)
它' S
<强> b)中强>
因为不支持在类扩展中添加(存储)属性。
使用扩展程序有两个重要规则:
扩展程序可以为类型添加新功能,但它们无法覆盖现有功能
扩展可以添加新的计算属性,但不能添加存储的属性,也不能将属性观察者添加到现有属性
答案 1 :(得分:8)
这取决于您期望实现的行为。
扩展: 您可以仅添加新方法和计算变量,但是你将在代码中实现无缝的努力。新功能可在任何地方使用,无需在代码中添加新类
子类: 您可以添加新变量和覆盖功能但是在您的代码中占据更大的空间。您需要在整个项目中使用该特定子类。
我想这更像是一个设计问题。
我的建议:如果整个项目需要这种新行为,请使用扩展程序,否则使用子类。