關於DDD領動設計的感悟2 OOP 面向對象編程

繼上篇文章 關於DDD領動設計的感悟1 POP 面向過程編程

POP造成的後果就是造成我們代碼複雜性偏高,不可重用,像裹腳布一樣又長又臭。

那怎麼利用OOP(面向對象)的方法來解決 POP (面向過程)的痛點。

首先我們要了解面向對象的 三大基本特徵:封裝、繼承、多態 (自行百度)。

首先我們需要提取共性,也就是抽象能力。比如鳥,貓,鹿其實都是動物

那麼我們就定義一個動物的父類(繼承)來描述動物擁有的能力

public class Animal {

    protected  String name;


    protected void run(){
        System.out.println("我是"+name+"我能奔跑");
    }

    protected void fly(){
        System.out.println("我是"+name+"我能飛");
    }

    
}

 再定義一個描述能力的接口 用於封裝

public interface Ability {

    /**
     *   封裝能力
     */
    void ability();
}

接下來就是我們的多態,這裏的多態意思就是有多種動物,比如下面的貓類

public class Cat extends Animal  implements Ability {
    @Override
    public void ability() {
        super.name = "貓";
        run();
    }
}

可以這樣理解,你創造了一隻貓,他擁有動物的奔跑能力

然後我們再創造一隻鳥

public class Bird  extends Animal implements Ability {

    /**
     * 通過多態來封裝繼承來的動物能力
     */
    @Override
    public void ability() {
        super.name = "鳥";
        run();
        fly();
    }

你創造了一隻貓,他擁有動物的奔跑和飛行的能力。

那麼以後產品需要一不同的動物,你只有裏面多態聲明一個新的動物種類,然後在父類中描述能力,在Ability中封裝它的能力。如下圖:

public static void main(String[] args) {
    Ability cat = new Cat();
    cat.ability();
    Ability bird = new Bird();
    bird.ability();
}

這樣實現了代碼公用,簡潔。高拓展性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章