我想在C++中使用复合设计模式,以便能够创建和操作一组对象。我遇到的一个问题是,因为树叶和复合材料的处理方式是相同的,并且复合材料可能由树叶和复合材料组成,所以在向复合材料发出命令时,对象可能会多次运行。使用复合设计模式对不同类型的对象进行操作,是否有办法防止对象被多次操作?
例如,复合组1包含对象A和B.然后,创建一个复合组2,其中包含复合组1和对象A.当复合组2被操作时,对象A将被操作两次。对于某些应用程序,我猜这不是问题,但对于我的使用,如果对于发布到组合的任何命令,唯一对象只能运行一次,我会喜欢它。
有没有一种惯用的方法来处理这个问题,或者是一些如何防止多次调用对象的成员函数,或者阻止一个对象被多次包含在一个组合中?
-
更新: 通过“惯用的”我的意思是处理这类问题的“传统”或“接受”的方式。 我想我只是假设/希望这是一个常见的问题,有一个确定的解决方案。
你的问题是对象A有两个'父母',你想在这里做什么?为什么这个对象分成两组?如果必须这样做,那么应用操作的标准思路就不会按照您的预期工作。您必须以某种方式记录您执行“此操作”的对象,并且只在对象上执行,如果没有。 – 2010-12-10 12:01:39
我想要实现的是不仅从单个对象创建组的灵活性,而且还从对象和现有组的任意组合创建组 - 基本上,复合模式的用途就在于,能够将叶子和复合材料同样处理通过组件接口? – zebraman 2010-12-10 17:20:42