代理或状态设计模式或迭代器模式在这种情况下更合适吗?

时间:2015-01-06 04:54:31

标签: c++ design-patterns state

在我的应用程序中,所有已完成的操作都在当前选定的对象上,这使我认为状态设计模式最适合。但是,逐个选择的所有对象基本上是相同的,因此每个状态实际上没有区别,除了该项只是一个不同的。

我的情况很像目录结构。我有一个文件夹集合,其中每个文件夹可能有不同的文件,但它仍然是一个文件夹。无论选择哪个文件夹,用户只能看到该文件夹​​的内容或添加文件。我的程序还通过所有文件夹(假定一个级别)进行迭代,并显示文件夹下所有文件的内容。

我很困惑,如何在我的应用程序中维护当前状态(=当前选择的文件夹)?

添加-上

令我困惑的是下一个状态逻辑,我不确定它属于哪个。请假设我正在使用特殊文件夹My DocumentsMy PicturesMy Music。转换逻辑(为简单起见)是,如果用户将10个文件添加到这些文件夹中的任何一个或每个文件夹的总大小超过10 MB,它应该转换到下一个文件夹。此外,应用程序应首先显示My Documents,而不是转换为My Pictures,而不是转换为My Music。这就是为什么我认为它也是一个状态,因为每个文件夹都需要知道它需要转换到哪个文件夹。

1 个答案:

答案 0 :(得分:0)

您可以使用状态和迭代器模式的组合。如果对象的状态很简单,只需使用一些表示文件夹状态的枚举(如OPEN或CLOSED)即可实现状态模式。 Iterator帮助您维护&一般来说,访问文件夹对象。