Java編程里一般怎么管理接口的實(shí)現(xiàn)類(lèi)?
問(wèn)題描述
比如說(shuō)Color接口有三個(gè)實(shí)現(xiàn)類(lèi)分別是:Red、Blue和Green現(xiàn)在我要在運(yùn)行的時(shí)候才決定用某個(gè)實(shí)現(xiàn)類(lèi)怎么管理比較優(yōu)雅?別if..else..
問(wèn)題解答
回答1:工廠方法模式
回答2:編程中有順序、分支、循環(huán)三種結(jié)構(gòu)。if-else作為最常用的分支結(jié)構(gòu),是不可或缺的。
關(guān)于這個(gè)問(wèn)題,對(duì)于只要學(xué)習(xí)過(guò)編程的人,if-else都是最簡(jiǎn)明的編程方式。而最簡(jiǎn)單的就是最優(yōu)雅的。
而if-else有時(shí)候看起來(lái)比較糟糕的地方在于,if中嵌套很多層if-else,導(dǎo)致邏輯判斷深度過(guò)大。
所以好的解決方案是,在能夠提前退出if的的時(shí)候就提前返回結(jié)果,保證if的深度最大為兩層。
這里有一個(gè)類(lèi)似的問(wèn)題可以看下:有很多if-else,該如何優(yōu)化?
設(shè)計(jì)模式可以為你帶來(lái)便利,但是不要在自己的解決方案中強(qiáng)套設(shè)計(jì)模式,你需要為自己的代碼在簡(jiǎn)單的設(shè)計(jì)與設(shè)計(jì)模式之間做出折衷。
回答3:題主的描述感覺(jué)比較符合設(shè)計(jì)模式中的策略模式。
回答4:為什么不用多態(tài)了,丟給隱式的類(lèi)型轉(zhuǎn)換。根據(jù)接口方法的實(shí)現(xiàn)來(lái)處理啊。
相關(guān)文章:
1. javascript - 按鈕鏈接到另一個(gè)網(wǎng)址 怎么通過(guò)百度統(tǒng)計(jì)計(jì)算按鈕的點(diǎn)擊數(shù)量2. sql語(yǔ)句 - 如何在mysql中批量添加用戶(hù)?3. mysql 可以從 TCP 連接但是不能從 socket 鏈接4. mysql - PHP定時(shí)通知、按時(shí)發(fā)布怎么做?5. 怎么php怎么通過(guò)數(shù)組顯示sql查詢(xún)結(jié)果呢,查詢(xún)結(jié)果有多條,如圖。6. mysql - JAVA怎么實(shí)現(xiàn)一個(gè)DAO同時(shí)實(shí)現(xiàn)查詢(xún)兩個(gè)實(shí)體類(lèi)的結(jié)果集7. 事務(wù) - mysql共享鎖lock in share mode的實(shí)際使用場(chǎng)景8. mysql建表索引問(wèn)題求助9. mysql - 數(shù)據(jù)庫(kù)建字段,默認(rèn)值空和empty string有什么區(qū)別 11010. mysql 非主鍵做范圍查找實(shí)現(xiàn)原理的一點(diǎn)困惑
