繼上篇文章 關於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(); }
這樣實現了代碼公用,簡潔。高拓展性