我正在为我正在研究的项目编写一系列专门的数据结构类,我注意到它们或多或少共享几个完全相同的属性和功能。
我可以只使用重复的代码,或者让它们从共享的基类继承,以便减少代码总量(这使整个事情更易于维护)。但唉,我现在无法决定该怎么做。
我或多或少地理解了继承路由的优点,但是当你将它与重复代码放在一起时有什么缺点?
对于长期而言,哪条路线更加明智?'项目
答案 0 :(得分:1)
从设计角度来看,继承违反了封装。通过从类继承,您可以将新类与父类的实现细节链接起来,并非所有这些都可能是继承类的特定实现所必需的。
例如,假设您有一个班级weight_
。此类有许多私有变量,例如maxSpeed_
,fuelCapacity_
和bicycle
。
现在让我们说你继承了班级fuelCapacity_
。新类将具有与<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/textView3" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/textView2" />
</LinearLayout>
</LinearLayout>
相关联的所有详细信息,即使它们不是必需的。这种事情可能会非常痛苦,因为对象变得更加复杂,因为破坏父级的更改也会破坏继承类,即使它们实际上并没有使用代码的易变部分。
更安全的选择是composition。