Java Struts操作和组合优于继承
当我想要应用DRY原则时,即为了统一不同用例(例如管理员角色和操作员角色)的多个Struts操作的代码,一个选项是为操作使用抽象基类“BaseAction”,然后使用“AdminAction Extendes BaseAction”和“OperatorAction Extendes BaseAction”。我将为抽象NewBaseAction、UpdateBaseAction、DeleteBaseAction、ListBaseAction应用继承 但有一个原则是“偏爱组合而非继承”()。有没有办法通过使用接口以干净的方式实现这一点 语句“偏好组合而非继承”这是一条总体上更好设计的线索。Struts之类的框架引入了自己的编程模型。因此,您应该按照Struts最佳实践的方式编写Struts操作 在您的情况下,编写基类还不错。问题是如何设计动作类层次结构,例如考虑将你的部分功能用作基本动作类。它将避免您创建许多不必要的类 找到DRY原则的“Struts方式”用例。更多Struts最佳实践可以在免费书籍中找到,作为旁注: 考虑到“new”和“update”通常是非常非常相似的操作,并且通常可以是同一个操作,使用一个case语句,而不是两个不同的类支持两个不同的JSP,例如。支持组合而不是继承”的解决方案是:Java Struts操作和组合优于继承,java,design-patterns,oop,struts,Java,Design Patterns,Oop,Struts,当我想要应用DRY原则时,即为了统一不同用例(例如管理员角色和操作员角色)的多个Struts操作的代码,一个选项是为操作使用抽象基类“BaseAction”,然后使用“AdminAction Extendes BaseAction”和“OperatorAction Extendes BaseAction”。我将为抽象NewBaseAction、UpdateBaseAction、DeleteBaseAction、ListBaseAction应用继承 但有一个原则是“偏爱组合而非继承”()。有没有办
操作使用的单独的非操作
类中,或
操作
类中,并拥有一个可以使用这些行为的操作
Struts config.xml
中使用不同的参数配置同一操作
类的多个
s,让操作
能够根据参数加载或选择不同的行为实现。这似乎有点不严谨,因为它采用了一些通常在struts config.xml
中存在的控制逻辑,并将其隐藏在代码中
但取决于你的发展文化,这实际上可能被认为是一件好事
组合方法是否值得做可能取决于您需要共享哪些代码,以及尝试将这些代码从Struts样板中分离出来是否有意义
在我使用的最后一个Struts应用程序中,我们使用了继承。也许这是正确的选择,也许我们只是不知道更好