java - 带有装饰器模式的 MVC

标签 java oop model-view-controller design-patterns decorator

在我正在进行的项目中,我们采用严格的 MVC 结构。我正在考虑将装饰器模式添加到一些模态窗口(微小的弹出窗口)以用于那些我想要一些额外功能的实现。

所以我基本上有以下内容:

SimpleModalWindowController.class
SimpleModalWindowModel.class
SimpleModalWindowView.class

编辑: 问题:是否可以在此基础上为新的 ModalWindows 实现实现装饰器模式,或者我应该继承吗?我会有很多不同的窗口,我想在未来结合其中的一些功能。

如果我用装饰器模式,抽象类应该是哪个类?

是将上述所有类(如 SimpleModal.class)组合成一个抽象类,还是我有多个抽象类?

我显然是这种模式的新手,只有一般的 OOP 技能,所以请耐心等待。

感谢您的帮助。

/马丁

最佳答案

我认为这不符合装饰器模式的条件。您要做的是创建具有特化(Fancy)的继承层次结构。

您不需要实现 Decorator。如果您实现的方式可以解决设计问题,那么您的实现方式看起来不错。在这种情况下,您不必使用模式。

这就是您不需要的装饰器的实现方式。我是 C# 专家,因此语法可能不完全正确。

abstract class ModalWindowModel
{
  protected ModalWindowModel modalWindowModel; //This can be any class implementing/derived from ModalWindowModel
}

class SimpleModalWindowModel extends ModalWindowModel
{
 SimpleModalWindowModel(ModalWindowModel modalWindowModel)
 {
  this.modalWindowModel = modalWindowModel;
 }


 // your other code goes here
}

class FancyModalWindowModel extends ModalWindowModel
{
 FancyModalWindowModel(ModalWindowModel modalWindowModel)
 {
  this.modalWindowModel = modalWindowModel;
 }

 // your other code goes here
}

...
// Usage
ModalWindowModel simpleModalWindowModel = new SimpleModalWindowModel(null);
ModalWindowModel fancyModalWindowModel = new FancyModalWindowModel(simpleModalWindowModel);
....

关于java - 带有装饰器模式的 MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5895218/

相关文章:

Java 关闭 Hook 问题

java - Java中如何在不使用全局变量的情况下在两个类之间共享变量?

model-view-controller - 挣扎于模型关系

java - 为什么for循环可以初始化Java中按值传递的变量

c# - 如何在 C#/VS 社区中将程序导出到设计器之外

java - MVC 或 Rest 或两者

java - org.springframework.beans.factory.BeanCreationException : Error creating bean with name - Spring security

java - 创建自定义 Hibernate UserType - isMutable() 是什么意思?

java - 如何使用 jackson mapper 将空字符串映射到 Map

php - 有没有PHP面向对象编程实战教程?