组合模式是构建具有小的子对象的较大对象,这些小的子对象可能由较小的“太阳对象”组成。
简而言之,组合模式是树结构。具有子对象的对象称为组合对象。没有子对象的对象称为叶对象。该请求是从树的顶部向下传递的,类似于二进制树的深度。
因为组合模式是用组合对象和叶子对象均匀处理的,所以组合对象和叶子对象需要具有相同的方法。在JavaScript中,该对象的多态性是固有的,并且没有类型的编译器检查变量类型因此,通常需要进行接口检查才能使用鸭型思想。
在文件系统中,文件夹对应于组合对象,文件对应于叶子对象。当我们操作一个文件夹时,我们不需要关心文件夹的内容。我们只需要操作文件夹,然后将递归执行文件夹操作。
组合模式并不完美。组合模式可能会产生这样的系统:系统中的每个对象看起来与其他对象相似。它们的差异只能在运行时出现,这将使代码很难理解。加法,因为每个对象必须统一,因此是,创建的每个对象都必须具有对象本身所需的对象,以及组合模式统一方法。如果物体太多,则系统可能不起作用。