我应该只是移动文件还是创建一个移动文件的类?

时间:2008-10-09 00:11:49

标签: c#

好的,我得到了这个标记(如在ID3v2.4等中)一些音乐文件的小程序。现在,我希望用户可以选择移动和/或重命名这些标记文件,如果他/她愿意的话。

考虑到我试图在这个系统中保持一个相当干净和松散耦合的设计(尽管可扩展性在这里并不重要,但它很有趣),你是否只需要someFileInfoObject.Move(someWhere)调用someWhere是应用模式还是明智的实现一些类 - 也许是MoveFileStrategy,RenameFileStrategy(我知道在某些系统中移动/重命名可以被认为是相同的,但是我希望它们可以单独启用) - 它可以找出目的地和是否应该在调用Apply(FileInfo file)方法时应用策略。

如果您认为某些策略类可能有用,您是否对良好的实施策略有任何建议?

正如已经说过的,过度工程在这里并不是一个真正的问题,因为它是一个有趣的项目,主要是为了获得一些编程和工程实践。 :)

2 个答案:

答案 0 :(得分:2)

您可以证明您的文件具有几乎无限数量的命令。想想这个类层次结构。

Command
    CopyCommand
    RenameCommand
    MoveCommand
    DiffCommand
    CompressCommand

这些并非真正的策略。它们只是具有简单“执行”方法的普通类。您可以通过普通的setter提供选项和参数。然后执行该方法。

这借鉴了Ant可以插入的任务的设计模式。

答案 1 :(得分:2)

在@ S.Lott上构建我的头顶,保持命令本身简单和原子化,并创建一个命令队列。 UI将命令添加到队列中,程序按顺序执行命令。

此外,您可以挂起(memento)已执行的命令并提供撤消功能。