2012-11-08 77 views
1

我正在創建一個Android應用程序。我需要在多個UI類上覆蓋draw方法來創建自定義外觀。這些類都是View的子類。我想知道做這件事的最好方法是什麼。我希望儘可能地重用代碼,所以我正在尋求幫助來組織事物。正如我現在看到它,我有兩個選擇:Java設計模式:多個類的相同方法

選項1 - 類別一切

如果我想使用LinearLayout,我創建CustomLinearLayout。如果我想使用ImageView,我創建了CustomImageView。在這些自定義類中,我重寫draw的方式完全相同。這看起來效率不高,因爲我重複代碼並擴展了幾乎幾乎沒有任何內容的類。

選擇2 - 子類超類

我最初的想法是延長View創造CustomView,因爲它已經是我所要使用的類的父類。但是,這不起作用,因爲我想要使用的所有現有子類仍在擴展View而不是CustomView

有沒有更好的方式來做到這一點?我錯過了什麼嗎?

+0

你到底想要達到什麼目的? – GraphicsMuncher

+0

模式:創建界面。 –

+0

我重寫了一些子類的繪製。然後,我抓取視圖的位圖並對其進行修改,以使質量下降。這個「問題」是我現在遇到的幾個問題,所以我想了解是否有更好的方法來組織我的項目。 – raydowe

回答

4

一個可能的解決方案是將您的繪圖邏輯提取到單獨的類DrawingCode。這可能包含靜態方法,或者甚至可以使用DrawingCode的實例來用其他參數定製您的繪圖代碼。當然,你仍然需要覆蓋draw()方法,但只寫一行代碼來調用DrawingCode.draw(param1, param2)。通過這種方式,您可以將繪圖代碼存儲在一箇中心位置,不要重複自己。

+0

看起來這是最好的解決方案。我仍然需要爲所有我想要繪製的東西創建子類,但至少所有繁重的工作都在一個地方。 – raydowe

+0

請您給出這個答案中建議的設計模式的名稱嗎? –

相關問題