java面向接口編程
阿新 • • 發佈:2017-07-01
暴露 上班 設計原則 大片 bic engine 加速 兩個 系統
假如說我大學畢業了,工作了,發了工資了,有錢了,於是乎(有錢就得燒啊),買了一輛自行車!!我就能夠開車,洗車。有時候車壞了,
上面代碼實現了一輛自行車的基本行為(到如今自行車都買不起,只是能夠想想以後,以後買了自行車會怎麽樣,有點小激動啊)。盡管是自行車,也算有車的人了,
最後就能夠上班了,可是自行車僅僅能賣廢鐵了,哪天小汽車壞了就得走著去上班了!!
在oop中有一種設計原則是面向接口編程,面向接口編程有非常多優點,詳細百度一大片。我來談一下詳細的使用中的一些不成熟的見解。!
首先面向接口編程能夠消除類之間的依賴關系,使得業務僅僅依賴接口。
這樣有什麽優點呢?
這種優點大大的。比方說我們聲明一個car的接口。我們對車有下面行為,我們能夠開車。洗車,推車,修車,拆車等等,
詳細用代碼實現:
package com.panther.dong.faceinterface; /** * Created by panther on 15-8-9. */ public interface Car { public void driveCar(); //開車 public void washCar();//洗車 public void fixCar();//修車 }
假如說我大學畢業了,工作了,發了工資了,有錢了,於是乎(有錢就得燒啊),買了一輛自行車!!我就能夠開車,洗車。有時候車壞了,
一看飯吃不上了,就得自己修車了
package com.panther.dong.faceinterface; /** * Created by panther on 15-8-9. */ public class Bicycle implements Car { @Override public void driveCar() { System.out.println("雙手拿把,助攻兩步。啟動。加速~~~"); } @Override public void washCar() { System.out.println("買兩張濕巾,給自行車做個保養"); } @Override public void fixCar() { System.out.println("車掉了鏈子。路邊趙根棒棒。自己按鏈子"); } }
上面代碼實現了一輛自行車的基本行為(到如今自行車都買不起,只是能夠想想以後,以後買了自行車會怎麽樣,有點小激動啊)。盡管是自行車,也算有車的人了,
上班同事問我怎麽來的,我把頭一擡,高傲的說:開車來的。!
這就是接口的一個優點,將實現封裝,調用者不須要知道詳細的實現就能夠使用,僅僅要知道詳細怎麽用即可
代碼內部實現能夠隱藏,不用暴露出來,減少了代碼的耦合性。
接著有一天下班同事一起走,看到我騎著的是自行車。哎,屌絲一個,我還以為是高富帥呢。你們是不是也遇到過,對,看一些源碼的實現真是有點脫。只是用起來你就
無論它了!!
工作了10年攢了10w塊錢,準備換車了,想了想掙錢不easy啊。還是不換了吧,接著有一個新穎大膽的想法,把自行車改成三輪車吧,接著把自行車大卸八塊,買了個輪子,著了半天,錢也花了,自行車也廢了,接著三輪車騎著老拋錨,哎。想死的心都有啊!
!(在原先的類中改來改去,搞得邏輯混亂。系統維護越來越差,最後搞的系統重構),這時候。沒辦法了,不能走著去上班啊,僅僅能買車了,把攢著娶媳婦的錢買了車,開車爽啊,
小汽車的行為代碼:
package com.panther.dong.faceinterface; /** * Created by panther on 15-8-9. */ public class EngineCar implements Car { @Override public void driveCar() { System.out.println("掛擋。加油,走起"); } @Override public void washCar() { System.out.println("花錢洗車。無奈"); } @Override public void fixCar() { System.out.println("師傅。換個輪胎,廉價點"); } }
最後就能夠上班了,可是自行車僅僅能賣廢鐵了,哪天小汽車壞了就得走著去上班了!!
所以面向接口編程的第二個優點就是當客戶需求變化時,僅僅需編寫該業務邏輯的新的實現類(買小汽車),通過更改配置文件(比如Spring框架)中該接口的實現類就能夠完畢需求。不須要改寫現有代碼,降低對系統的影響。
我如今就體會到這兩個優點,以後體會到別到優點再談!!。!~~~~~~
java面向接口編程