和isA相比hasA能更好的封装,所以如果是既可以isA又可以hasA的情况就用hasA或者holdA就可以了。
感觉最开始的组件不用太多考虑接口问题直接完全暴露也可以,因为用户不应该创建底层的对象而应该使用高层的对象。底层组件的封装主要应该是为了避免在编写高层次组件时出现各种奇怪写法。
现在有一个可能可以用上派生类写法的地方:
目前编写的组件是模型类和图片类(缓冲区类),如果认为不同操作的最终结果都应该是图片,而结果主要依赖模型,而把其他必要依赖项放到一个类中。
那么:中间需要一个庞大的shading系统,具有大量基础的数学计算函数、进行某种处理以用于其他多个功能函数的函数、总的实现一个功能的函数……不同功能函数需要的依赖项不同,这些不同的依赖项全部作为一个基类的派生类编写,得到可能是一个树形的类集合?