【发布时间】:2013-04-07 15:00:50
【问题描述】:
每当使用安装向导时,用户都会回答许多不同的问题,直到可以开始真正的安装。将此与我当前项目中的一个类进行比较:我有一个需要多个配置步骤的类。它不适用于安装程序,但我认为安装程序向导是解释所需的更大配置功能的好方法。 我正在努力寻找一个好的设计解决方案。
我目前的解决方法:
Flat:我可以定义一个大型类,其中包含所有步骤作为方法/函数/属性。当调用错误的方法时,可以添加一些控制方法来引发异常。它会完成它的工作,但是程序员会因为看到这么多不同的方法而感到困惑。 (-> 他需要更多时间来了解它是如何工作的)
层次结构:我可以为每个配置步骤创建大约 3 个不同的类。每个都有自己的方法和功能。最后一个类在其构造函数中需要所有 3 个配置类的实例。这看起来不会太混乱,因为每个类中只有正确的方法可见。然而,程序员可能会生气,一个小类需要如此复杂的准备,创建 3 个其他类。也许是嵌套类,但我认为这也是一种糟糕的编码风格。
我想知道是否有人已经遇到过这样的问题,并且可以通过以下方式回答这个问题。要么提供合适的设计模式,要么针对此类问题提供一些经验/最佳实践类结构。
我已经搜索了类似的问题,检查了一些可能适合的设计模式,并且已经提供了 2 种方法思路来说明答案的方向。如果您认为答案不够清楚,请评论/询问遗漏的部分。
【问题讨论】:
-
问题是可以涉及的设计模式的可能性是无限的,这取决于您的确切要求是什么,确切的领域,我们不知道。您应该找到一个项目,其中有一个阅读源代码的向导。它们通常涉及某种状态模式。
-
如果一个类有那么多事情要做,这表明已经存在一些设计缺陷。你能详细说明一下这个复杂的引导程序吗?因为如果关注点分离已经存在一些问题,您可能找不到将其转化为好的设计的金锤。
-
@mpm 感谢您的解释。我正在使用 VB.Net/C#,而不是向导的功能,一个类应该易于使用,但是这个类需要多个配置步骤。使用状态模式,我将能够更改相同方法调用的操作,但如果方法在每个步骤中发生更改,那么我想我无法使用它。我在我当前的项目中定义了多个枚举,然后选择从数据库中访问哪一个。一个方法应该提供字符串的结果列表(索引相关)。在此之后,“配置”完成,该类应用作索引查找表
-
@MareInfinitus 我的主要目标是与数据库的通信。由于它需要一个字符串列表(以定义要访问的值)并允许稍后使用 list-index-number 访问这些值,因此我想使用一个简单的枚举。但是,其中一些变量存在 n 次,其中 n 应该在以后为程序员更改。所以我认为我需要构建一个更复杂的配置。 1.step 定义要使用的枚举定义中的参数,2.step 从类中获取字符串列表,3.step 向类询问枚举中的索引,所以我可以在代码中使用枚举
标签: oop class design-patterns coding-style