我的骰子模拟器在几个方面让我烦恼,都与面向对象的设计有关:
换句话说,我的GUI是可变的,我的数据模型是可变的 - 它们都依赖于用户输入中收到的许多潜在条件。我用来处理变化的传统方法是switch和if语句,但这些方法令人困惑,笨重和嵌套。
是否存在面向对象的设计范例,允许GUI和模型的变化?
答案 0 :(得分:1)
与大多数问题一样,解决方案是添加更多抽象层:)
Have a look at MVC, MVP and MVVM*。这些模式旨在分离UI和数据之间的职责。因为您希望在模型(数据)和UI(视图)之间切换运行时,您可能需要创建一个额外的抽象,一个契约,以允许任何视图绑定到任何(或特定的子集)数据。
*此链接绝对不是唯一的来源,但搜索网络(当然还有Stack Overflow)将帮助您掌握这些模式。
答案 1 :(得分:0)
最受欢迎的三个:
MVC if web MVP如果桌面 MVVM
我之前发布了这个并提供了图表:http://carnotaurus.tumblr.com/post/2748019388/visual-pattern-links
我还建议将DAL拆分为两个,以帮助测试目的