我想知道在我希望我的模型(MVC的“M部分”)根据其来源引发异常的情况下是否使用装饰器模式是好的。我自己解释一下。
我有一个名为Game的类,它是Model的一部分。我有两个视图:GUI和命令行。我希望我的模型在用户输入字符而不是数字(例如)时为命令行视图引发异常。当然,我不希望模型处理此异常,因为它“属于”命令行而不属于模型本身。
为了封装这两种不同的行为,我打算用两个类来装饰Game类:CommandLineGame和GUIGame只有一个属性:Game并处理它们自己的Exception。这是个好主意吗 ?还有更好的吗?这种解决方案的问题在于每个根据其来源引发异常的模型类都必须进行修饰......
答案 0 :(得分:2)
您在示例中描述的是“输入验证”。严格来说*,它属于MVC的Controller(“C Part”)。
对MVC的关注点分离如下:
我希望这有道理=)
根据语言/框架的不同,MVC组件之间的界限会变得模糊不清。一些习惯用法会将大部分Controller都归入View中,但逻辑的封装应保持相对类似。
*在实践中,对于防御性编程,输入验证会因相互猜疑而进行两次:它们分为客户端中介和服务器端中介:< / p>
答案 1 :(得分:0)
这将使您的代码非常干净,从学术角度来看,我非常喜欢这些代码。 另一方面,你是否需要为这样一个简单的问题引入这种设计复杂性?
所以,如果你需要干净的代码......去吧。