2

在我的项目中有一个文档管理系统。有一个基Document类和一些派生类。还有一个DocumentManager类管理文档的打开/关闭/激活操作。

及其派生类可能希望在Document加载、关闭等时执行某些操作,但状态更改由管理器类控制,因此目前在类调用的类上有(虚拟)方法,如OnLoaded(), 。除了将这些方法公开似乎没有必要之外,它工作正常。OnClosed()DocumentDocumentManager

另一种设计是让DocumentManager类触发事件并且每个Document实例都订阅这些事件。恕我直言,这并没有太大的区别,但会带来内存泄漏的风险。

我有一种直觉,这些都不是“解决方案”,并且有适合该问题的最佳实践。有人可以启发我吗?

4

1 回答 1

2

我的直觉是,尽管在不知道项目的具体要求的情况下很难确定,但您的DocumentManager班级中有逻辑,可能应该在班级的子类中Document

我会想象一个(可能是抽象的)Document具有 publicload和方法close的基类。whatever每个子类将根据其特定要求实现这些方法,从而使您可以轻松创建任意数量的Document子类,而无需DocumentManager更改逻辑(请参阅多态性)。如果这些操作是异步的,您的Document类将分派事件以通知DocumentManager它们已完成。

这将使管理(我假设)其实例集合DocumentManager单一责任。Document

于 2012-10-18T20:59:45.503 回答