爲了最大限度地實現代碼重用,我爲我的Python代碼創建了一個相當複雜的類層次結構。它是這樣的:簡化複雜的類層次結構
class ElectionMethod
class IterativeMethod
class SNTV
...
class NonIterativeMethod
class OrderDependent
class CambridgeSTV
...
class OrderIndependent
class WIGM
class ERS97STV
...
class Recursive
class MeekSTV
...
只有類層次結構的葉子被實例化到對象中。這確實能夠最大限度地實現代碼重用,但代碼本身很複雜(有些類有20多個方法),並且考慮到許多級別,可能會耗費時間來查找實現的地方。
我試過拔出大塊的功能並將該功能放入單獨的對象中,但是我沒有找到一個好方法來做到這一點,因爲幾乎所有的功能都取決於公用數據。也就是說,我可以將一些代碼移動到不同的對象上,但它需要引用大型複雜層次結構來獲取所需的數據,因此它不是真正的封裝。
有沒有人有任何建議如何使這更易於管理?
如果不知道項目的具體細節,我們可以說不多。你需要仔細檢查設計,找出需要繼承的東西。 – katrielalex 2010-08-19 17:56:46
感謝您的建議。我將不得不仔細觀察一下,看看他們是否能爲我工作。 – 2010-08-20 12:56:56