2012-12-21 35 views
1

我有一堆相關的類,他們都實現了一個特定的接口,以不同的方式執行相同的功能。OOP:創建一個utils類或擴展一個公共基礎對象?

約70%中的任何一個類中的代碼的是唯一的,和2個或更多的類之間約30%可以被重新使用。該集合中有大約30個這樣的類。

我只是不能決定什麼是更符合邏輯:

在它創建的所有可重複使用的功能,一個大的基類,或者只是創建一個utils的類,在它的常用功能。

這兩種方法對我來說看起來是一樣的,但是我有理由相信另一種方法嗎?

回答

2

答案是依賴於你的方法的性質。當要在無國籍對象值(獨立的)例如執行一些操作Util類/方法是更有用的getMaxOfArray(int[] array)。重新迭代時,當您將某些(有限)參數傳遞給某個方法並從方法中獲得預期輸出時,則可以考慮將該方法作爲Util類方法。這是原因,通常util方法創建爲static並且不與類實例關聯。

如果是這樣的行爲,然後使用Util類。但是,如果您的方法嚴重依賴於對象實例,那麼最好使用Class Hierarchy和基類中定義的常用方法。

0

如果有一些功能,可以獨立使用作爲實用,我寧願一個util的類,因爲它是容易測試,並且可以與任何地方沒有副作用所需的,而不是在層次結構或組合物,除非打算使用它在邏輯上是有道理的

+0

加上它打開了它的可能性在別處再次使用,因爲它是一個原子 – PeteH

1

父類和它的孩子應該是很特別的關係,孩子「是一個」父更專業的情況。你的共同功能是否適合這種想法?當你談論「大型基礎班」時,我懷疑沒有,但是考慮到你提供的信息只是一種預感。

如果幫助器功能不適合這種關係,那麼我會建議實用程序類。

請記住,雖然它也可能適合混合搭配,但這一切都取決於每種方法在做什麼。

+0

你的直覺公共混凝土類之間共享是正確的,核心功能是實現由上述接口定義的一個主要方法。常見的功能是功能和表示數據的方式。然而,由於代碼的性質,*有一些地方我在這些函數中重新使用對象,比如大型的StringBuffer,我不想每次都重新創建這些對象,這不太容易封裝到實用程序中類。所以我認爲你對混搭的看法很好說。 –

1

您將需要識別具有通用功能的類,將它們分組並提取出接口。

查看@的最佳示例是Java集合的管理方式。

可以有 1.接口層次 2.抽象類 3.實用工具類

相關問題