实际上面向对象的思想课本上到处都有,如果是小程序的话、只有几把枪的情况下,面向对象的思想根本体现不出什么优势来,但三五百人的开发队伍,并且又是那种平台+应用的开发模式的话,这时的面向对象的思想才有用武之地:这是一种思想上的共识,有了这种思想,不管是平台开发人员还是应用开发人员才可以提高开发效率、减少通信成本、提高代码复用率:
举个例子,我们要创建一个OpenGL的特效类SomeEffect,常见的特效是粒子系统、飘带(飞机拉线、导弹飞行轨迹),目的就是创建逼真的场景。因为粒子系统和飘带均是特效,所以它们之间可以抽象出共同点并加以封装,就叫BaseEffect吧。于是,特效类聚合了粒子系统和飘带。在默认情况下,无论是粒子系统还是飘带都可以在不设置任何参数时能正常的创建、显示、销毁。问题的关键在于,现在需求来了,粒子系统默认情况下的1000个粒子不够逼真,用户想要生成100000粒子,这该如何?于是,开发人员查阅了SomeEffect的类图,知道了一件事:原来SomeEffect聚合了粒子系统和飘带,那我只需要根据SomeEffect提供的public方法把粒子系统的实例get出来,再进行一次强制类型转换就可以获得粒子系统对象,从而通过具体的粒子系统对象动态调整参数。