继上篇文章 关于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(); }
这样实现了代码公用,简洁。高拓展性