在我正在进行的项目中,我们采用严格的 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/