关于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();
}

这样实现了代码公用,简洁。高拓展性

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