组合类和嵌套类区别,实例代码详解

组合类简单点讲就是A类中有B类,B类定义在A类外面。比如点类和圆类,圆类就可以设计成组合类。因为外部程序会用到点对象,也会用到圆对象,所以可以将圆类设计成组合类。

组合类设计代码实例:

嵌套类就是A类中有B类,B类定义在A类里面。这种就有了从属关系,要单独定义B类就必须要写成A::B b(B定义在A类中公有的public部份),这种可以看成多了一层名字空间,但这不是主要目的。一般来说B类如果只属于A类,外部几乎不会用到B类,这种情况下就会设计成设计成嵌套类。对类进行嵌套通常是为了帮助实现另一个类,并避免名称冲突。

组合类设计实例代码:

这样将点类设计到圆类里,还有一个好处,减少圆类对外部依赖项。依赖问题在做大的项目时比较常见到。

注:理解组合类和嵌套类的本质后,根据实际编程需要来运用。组合类和嵌套类其本身来讲没有好坏之分,初学者不要认为组合类优于嵌套类,或是嵌套类优于组合类。如果一定要比较,哪就是必须有实际的设计需求。