畫類圖的設計模式你能記住嗎?
畫類圖的設計模式你能知道什麼情況下用嗎?
我不畫類圖,我不講框架,我只講故事。
1. 場景
關鍵字:組件
我是個學電路的,我呢想造個模塊賣出去,比如GPS模塊,別人拿到我的模塊就能拿到經緯度數據,我怎麼辦呢?
我總不能把電路圖給別人吧,那誰還買我的模塊呢! 我就把自己的電路封裝到這麼一個集成電路中,只給別人流出接口即可,比人想用你的模塊,就得實現你的接口。
有時候你這種組件比較大,比如:電腦主板(如下圖),電腦主板生產商可不給你生產CPU,內存的,他只是給你留了個CPU和內存的接口(看看下圖),我自己搞一個CPU或者內存,只要跟主板的接口一樣,插上去,也可以使用了。但人家主板怎麼用你的CPU內存,你不知道吧,對嘍,人家集成進去了,不讓你看。也就是說,廠商把需要你自己實現的組件留一個接口出來,把對組件的調用封裝起來。
想想現實生活中,主板生產商(如:華碩,技嘉,微星,升技,映泰) + 硬盤(希捷,西部數據)+CPU(因特爾,高通)… ===> PC,這個===過程就是電腦集成,比如:聯想,IBM等,所謂的攢機的。如果你站在主板生產商的記住看,理解一下模板
2.案例解決
能認識下面這些東西吧
-
從0到1構建:
比如: 我做個電機,電機輸入時電,輸出的是動力。電機內部當然我不想讓客戶自己動,但輸入的電力和輸出的動力需要用戶自己來設計,你是驅動啥呢?用戶把軸上連接葉片就是風扇,連上刀片就是豆漿機,連上車軲轆就是電動車。
代碼實現:(Java語法)
1. 電機爲Abstract類,需要輸入輸出的作爲abstract方法,需要輸入的作爲參數。
2. 電風扇類集成電機類,實現abstract方法,即可。
-
重構現有代碼:
比如:我有電風扇,豆漿機,電動車。發現他們都是:接通電源,啓動,輸出動力。那麼我們就可以把這些共性提出來。
3. 實現一:繼承Abstract類
對比一下實現,想想上面的例子,Engine1類是不是提出的組件,GPS模塊。
調用:
ElectricFan1 fan1 = new ElectricFan1(); fan1.setEle(new Object()); fan1.start(); |
邏輯:這種方式電機是風扇的一部分。
4. 實現二:擴展接口
這個是以計算機爲主的
5.比較:
不比較了,自己體會吧。