面向过程编码遇到的问题
写代码时经常会碰到这样一种情况:想生成不同实例,那就需要做多重if判断或者switch下n个case。
比如家畜这一种类,根据情况我可能需要一只鸭,也可能需要一头牛:
switch(家畜):
case 鸭:
提走一只鸭
break
case 牛:
牵走一头牛
break
...
...
这样的问题是每次追加一种家畜就需要追加新的处理语句,也很有可能在其他各处的判断语句也要一起改。
代码量增加后,这真的是一个非常非常麻烦的事情。
解决办法:多态
面向对象的程序设计理论中,多态是指:
同一操作作用于不同的类的实例时,将产生不同的执行结果。即不同类的对象收到相同的消息时,也能得到不同的结果。
多态替换的是面向过程编程里的switch或者多重if判断,让扩展变得更灵活,不需要多处改动。
不同的家畜我们就创建成不同的类,然后全都继承自一个base类,比如家畜类。
根据具体的情况,我们需要获取的是鸭类的实例,也可能是牛类的实例,这个就看具体的情况。之后则调用家畜类里的方法,或者自己定义的方法即可。
这样就不需要每次都重复做一次switch判断或者if判断。
比如:
牛类实例 执行方法:检验
鸭类实例 执行方法:检验
(检验这个方法,则是它们共同的父类家畜类定义的)