類別

2012-07-20 43 views
0

的「同義詞」爲了舉例,我有一個代表WAV聲音文件的類WAV。爲了方便起見,我需要添加一個名爲WaveformAudioFile的類,它具有完全相同的功能。類別

無論可能的設計/風格問題,整合新班級的適當方法是什麼?通過使用擴展(沒有添加任何東西),通過使用通用接口或其他東西?

編輯:進一步思考,如果要考慮設計會有避免冗餘代碼的替代方案嗎?我的意思是如果有幾個類,編寫接口會很麻煩。某種可用於初始化的模式。屬性?

+1

我更喜歡界面來定義合同。我通常將子類型視爲實現細節以幫助「代碼重用」。 – 2012-07-20 05:35:48

回答

2

1.從設計的角度來看,如果你想要你的類扮演一個特定的角色,那麼去接口。

2.如果你有行爲,不斷變化,則其更好地它們封裝在任何抽象類或接口,然後擴展或實現其指定某些功能。

////////////////////////////////////////// 編輯: //////////////////////////////

我想你是指DRY原理(不要重複自己) ,根據這個原則,它更好地保持您的信息和行爲在單一的可感知的地方

但是,如果對於同一功能,行爲對於不同的類是不同的。

對於例如:

考慮Painting如與paint() Method一個類。

現在

paint()方法可以撫摸,滑翔,陰影等方式做這件事的。

然後它的更好地將該方法封裝到抽象類或接口中。

public interface Paint{ 

paintDoIt(String style); 

} 

不是關於一個無聊的工作,而是靈活性,不必更改而不觸及了太多的類和不破壞代碼的能力。

只有一件事是軟件工程中的一個常數,那就是CHANGE

所以我們需要採納它。

+0

我幫你找到2號。像模板模式。如果你願意給我更多的想法,我已經加入了這個問題。 – 2012-07-20 05:51:44

+0

我編輯了我的答案瞭解更多詳情..見編輯部分 – 2012-07-20 06:05:00

+0

太好了。如果有人像你一樣「畫」出來的東西,我很感激。它提供了一些指導方針。 – 2012-07-20 06:08:23

1

使用共同的interface並在兩個類中實現它。一個主要的好處是你的WAVE,然後所有的課程都可以擴展任何其他課程。

+0

謝謝。我已經增加了更多的問題。 – 2012-07-20 05:52:11

1

從我的角度來看,接口是最好的解決方案。爲實現此類功能的類聲明一個通用接口,並使用此接口而不是直接類類型定義。

例如:

ISoundFile mySoundFile = getSoundFile(); 

哪裏ISoundFile是你聲明的接口。

+1

謝謝。我已經加入了這個問題。 – 2012-07-20 05:52:00

0

只需添加它,因爲它可能會感興趣的人。我想過另一種解決方案,那就是簡單地使用包裝類:)。