被客户不断变化的需求所”折磨“
客户的第一次需求:
开发一个打印机的控制程序,能够实现开机,关机,打印3个功能, 简单;
客户的第二个需求:
增加一台新的打印机,修改一下程序吧,悲剧的是两台打印机牌子不一样,一个是HP,一个是canon;
所以需要修改,原来的class Printer改为class hpPrinter, 再增加一个新的class canonPrinter;
佳能打印机比惠普多了一个清理的功能,所以佳能类里面多了一个函数clean();
这里面存在大量重复的代码;
如果将来开发大的程序存在几万个类,修改重复代码的代价太高了,这样的编程思路的是不适合大型项目的开发的;
可能存在上百个类需要修改,如果一个一个去修改,很难判断是否全部修改了,所以需要面向对象的思维;
我们可以把惠普打印机和佳能打印机抽象出来,创造一个父类叫做class Printer{.... },把所有打印机的共有属性和方法集成到打印机这个类里面;
在子类代码里面继承父类,就可以减少大量的重复代码,在子类里面写自己独有的方法就好了;
此外,在子类里面,用super()去调用父类的函数,再用this调用自己的独有方法,就能极大减少重复代码了;
尝试在以后的编程过程中,通过继承来解决代码重复的问题;
无论是什么样的重复代码,都要尝试用各种各样的方法去解决重复代码,这样才会使自己的代码具有高可扩展性。