2009-02-14 109 views
5

我尝试遵循SOLID原则。但每次涉及到用户界面时,我都发现客户需要的混合,混合数据和庞大的单一责任原则之间存在固有的摩擦。SOLID和用户界面?

现在它可能将典型的用户界面的各种零碎划分为单个责任类,但是随后您会遇到各种有趣的构造问题,因为所谓的“单独”的gui实际上往往是相同的共享状态的不同意见,或者至少是部分重叠状态的意见。

我经常最终将我的视图的相当笨重的控制器类混合在一起,这些控制器类不是非常类似SOLID的,但它的编码实践相当不协调,而且让我困扰了一下。看起来分裂它的复杂性不值得。

那么你如何处理它呢?

回答

3

你看过presentation patterns(Martin Fowler的未完成的着作)?我倾向于将复杂视图和自主视图的演示模型用于简单视图。演示模型为您提供了灵活的设置,您可以轻松测试这些类。

1

我认为你是非常正确的。如果这是您的应用程序的良好用户体验,那么数据视图可能需要是“混杂的,汇总的数据”。对于UI来说,UI的可用性比试图坚持编码设计原则更重要。代码的设计原则不应该规定用户界面的外观或工作方式。然后,你最终会得到对代码有意义的严格形式和视图。做对用户有意义的事情。

这就是说,像上面提到的MVC/MVP模式仍然可以帮助。将主持人与观看者分开。这样,您仍然可以隔离视图并保留视图的SRP。您的演示者是不得不违反SRP并且有多种变更原因的演示者。

+0

我想10-15岁的数据库和现代gui之间的差异是什么让我们一半的工作;) – krosenvold 2009-02-14 16:26:04