设计改进
Design Improvement
假设我们有一个 UI 和一个 selectOneMenu
,其中包含两个项目 basic
和 customized
。让 class DocumentController
负责为所选类型(basic
或 customized
)生成 PDF 文档。
很明显 UI(例如新项目)的扩展会导致 class DocumentController
的修改。因此 class DocumentController
违反了 开闭原则 ,这意味着它也违反了 单一职责原则
我解决此问题的方法基于 责任链设计模式 ,因此我为 selectOneMenu
的每个项目创建了一个单独的 class。现在该应用程序对扩展开放,但对修改关闭,每个 class 只负责一件事。
现在我的问题是如何管理新 classes 的不相交和公共数据。 责任链设计模式适合这个问题吗?
感谢您的任何建议
...be responsible for generating PDF documents...
考虑一下这个问题并允许控制器委托给具有基本和自定义实现的抽象工厂怎么样?这样你就安全地进入了 SOLID 领域。
假设我们有一个 UI 和一个 selectOneMenu
,其中包含两个项目 basic
和 customized
。让 class DocumentController
负责为所选类型(basic
或 customized
)生成 PDF 文档。
很明显 UI(例如新项目)的扩展会导致 class DocumentController
的修改。因此 class DocumentController
违反了 开闭原则 ,这意味着它也违反了 单一职责原则
我解决此问题的方法基于 责任链设计模式 ,因此我为 selectOneMenu
的每个项目创建了一个单独的 class。现在该应用程序对扩展开放,但对修改关闭,每个 class 只负责一件事。
现在我的问题是如何管理新 classes 的不相交和公共数据。 责任链设计模式适合这个问题吗?
感谢您的任何建议
...be responsible for generating PDF documents...
考虑一下这个问题并允许控制器委托给具有基本和自定义实现的抽象工厂怎么样?这样你就安全地进入了 SOLID 领域。