1. 程式人生 > >java面向接口編程

java面向接口編程

暴露 上班 設計原則 大片 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面向接口編程