[编程技巧]用“多态”让代码更灵活

241 阅读1分钟

面向过程编码遇到的问题

写代码时经常会碰到这样一种情况:想生成不同实例,那就需要做多重if判断或者switch下n个case。

比如家畜这一种类,根据情况我可能需要一只鸭,也可能需要一头牛:

switch(家畜):
 case 鸭:
	提走一只鸭
	break
 case 牛:
	牵走一头牛
	break
 ...
 ...

这样的问题是每次追加一种家畜就需要追加新的处理语句,也很有可能在其他各处的判断语句也要一起改。

代码量增加后,这真的是一个非常非常麻烦的事情。

解决办法:多态

面向对象的程序设计理论中,多态是指:

同一操作作用于不同的类的实例时,将产生不同的执行结果。即不同类的对象收到相同的消息时,也能得到不同的结果。

多态替换的是面向过程编程里的switch或者多重if判断,让扩展变得更灵活,不需要多处改动。

不同的家畜我们就创建成不同的类,然后全都继承自一个base类,比如家畜类。

根据具体的情况,我们需要获取的是鸭类的实例,也可能是牛类的实例,这个就看具体的情况。之后则调用家畜类里的方法,或者自己定义的方法即可。

这样就不需要每次都重复做一次switch判断或者if判断。

比如:

牛类实例 执行方法:检验

鸭类实例 执行方法:检验

(检验这个方法,则是它们共同的父类家畜类定义的)