设计改进

时间:2016-05-10 12:06:08

标签: design-patterns design-principles

假设我们的用户界面为selectOneMenu,其中包含两项basiccustomized。让class DocumentController负责为所选类型(basiccustomized)生成PDF文档。

很明显,UI的扩展(例如新项目)会导致class DocumentController的修改。因此class DocumentController违反了开放封闭原则,这意味着它也违反了单一责任原则

我基于责任链设计模式解决此问题的方法,因此我为selectOneMenu的每个项目创建了一个单独的类。现在,应用程序对于扩展是开放的,但是对于修改是关闭的,并且每个类完全负责一件事。

现在我的问题是如何管理新类的disjoint和commen数据。 责任链设计模式是否适合此问题?

感谢您的任何建议

1 个答案:

答案 0 :(得分:1)

  

...负责生成PDF文档......

如何稍微考虑这一点并允许控制器委托给具有基本和定制实现的抽象工厂呢?这样您就可以安全地进入SOLID领域。