2012-06-11 66 views
0

我編碼在Ruby的一些薪資軟件,它的意思是使用繼承的公司無論是在美國和加拿大(與其他地方的未來擴展的可能性。)顯然,對於一些類,比如員工,將會有一些共享功能,但也有很多不同之處。例如,一些監管數據和業務邏輯只能在一個國家或另一個國家使用。多繼承,而不是在Ruby中

由於公司只能在該應用程序中包含一種類型的員工(即公司的員工只能是加拿大人或美國人),所以我在考慮只使用mixin在運行時添加不同的功能,而不是創建一個可能變得非常麻煩的繼承層次結構。 Employee類不會是唯一的國家之間差異的類,所以看起來動態地增強我的所有類以便在運行時包含區域功能會很有幫助。

這是組織我的應用程序的有效途徑,還是有一些缺點呢?

回答

1

這聽起來像是一個很好的模塊用例。但請注意,Ruby的標準庫中也有delegator pattern,也許你可以簡單地使用它將某些消息轉發到一個通用的員工對象。總是很難推薦一些對要求知之甚少的東西。

如果您想了解更多關於一些混入,「機鋒紅寶石」拉斯·奧爾森上有一個很好的章(第16章,「使用模塊如混入」)。我不會爲此推薦購買這本書,但無論如何這是一本好書。我不確定,在那本書中的某個地方,似乎甚至有一個與你想要做的有些相似的例子(不同的背景,相同的原理)。

0

一般來說,在大多數情況下,使用mixins代替繼承似乎更好。繼承是一種非常特殊的關係,往往似乎比它提供的力量增加了更多的複雜性。通常,繼承似乎需要更多的基礎類操作,而不是看起來健康。當需要新的子類時,基類往往會隨着一個或多個子類的特殊邏輯而增長。我發現mixin往往更易於重用,因爲它們往往更小,更關注於一個問題。