Java編程里一般怎么管理接口的實(shí)現(xiàn)類?
問題描述
比如說Color接口有三個(gè)實(shí)現(xiàn)類分別是:Red、Blue和Green現(xiàn)在我要在運(yùn)行的時(shí)候才決定用某個(gè)實(shí)現(xiàn)類怎么管理比較優(yōu)雅?別if..else..
問題解答
回答1:工廠方法模式
回答2:編程中有順序、分支、循環(huán)三種結(jié)構(gòu)。if-else作為最常用的分支結(jié)構(gòu),是不可或缺的。
關(guān)于這個(gè)問題,對(duì)于只要學(xué)習(xí)過編程的人,if-else都是最簡明的編程方式。而最簡單的就是最優(yōu)雅的。
而if-else有時(shí)候看起來比較糟糕的地方在于,if中嵌套很多層if-else,導(dǎo)致邏輯判斷深度過大。
所以好的解決方案是,在能夠提前退出if的的時(shí)候就提前返回結(jié)果,保證if的深度最大為兩層。
這里有一個(gè)類似的問題可以看下:有很多if-else,該如何優(yōu)化?
設(shè)計(jì)模式可以為你帶來便利,但是不要在自己的解決方案中強(qiáng)套設(shè)計(jì)模式,你需要為自己的代碼在簡單的設(shè)計(jì)與設(shè)計(jì)模式之間做出折衷。
回答3:題主的描述感覺比較符合設(shè)計(jì)模式中的策略模式。
回答4:為什么不用多態(tài)了,丟給隱式的類型轉(zhuǎn)換。根據(jù)接口方法的實(shí)現(xiàn)來處理啊。
相關(guān)文章:
1. 如何解決docker宿主機(jī)無法訪問容器中的服務(wù)?2. 前端 - CSS3 box-shadow如何設(shè)置,或者用什么方法可以產(chǎn)生圖中這樣陰影的效果。3. node.js - vue-cll+sass 樣式不出來 已經(jīng)npm install sass、 sass-loader了4. html - css 如何讓文字標(biāo)題顯示在邊框上?5. docker 下面創(chuàng)建的IMAGE 他們的 ID 一樣?這個(gè)是怎么回事????6. 在應(yīng)用配置文件 app.php 中找不到’route_check_cache’配置項(xiàng)7. html按鍵開關(guān)如何提交我想需要的值到數(shù)據(jù)庫8. vim中編輯HTML文件時(shí)換行不能縮進(jìn)9. HTML5中怎么判斷用戶是否正在瀏覽頁面?10. html - 微信端video標(biāo)簽播放mp4視頻,安卓端提示視頻解析錯(cuò)誤
