原始需求和设计 事情是这样开始的,公司需要做一套程序,鸭子,设计如下: 一个鸭子父类,多个派生类,三个可override的方法. 第一次需求变更 我们要会飞的鸭子!!!!! 所以我们做了如下的更改: 父类加了fly方法,嗯,所有的鸭子都会飞了,需求实现! 问题发生了,因为不是所有的鸭子都会飞 我们可以在派生类中把父类的fly方法中的内容覆盖掉,那么这个鸭子就不会飞了! 那么问题又来了,如果再出现几个新型鸭子都不会飞,是不是每个都得覆盖一遍fly方法啊???? 也许,可以用接口? 把每个方法都做成…