我是一名新手。经过多年的程序编码,我的公司正在转向最热门的新趋势,即WINDOWS FORMS :)
我们的应用程序是TabbedMDI。基本上我们左边有一个菜单,单击一个条目会打开一个新的CRUD选项卡。我已经看到一些MVP示例有几个文本框,它演示了将代码移到Presenter类以使其可测试!我们有比这更复杂的逻辑。
我听说Jeremy Miller谈论演示模式和屏幕激活器以及屏幕导航器等。可悲的是,UI模式上没有书籍,而其他模式上有大量书籍,他们谈论从Animal类继承猫喵和狗吠。
所以我的问题是:
假设我们正在根据来自某些地方(XML,WEB SERVICE或数据库中的案例表)的信息动态构建tabbedMDI表单。创建表单后,是否启用/禁用工具栏按钮有很多逻辑;何时以及我们是否可以从tabpage导航到tabpage。
第一页和其他页面的导航规则不同,依此类推。验证不仅涉及表单上显示的字段,还涉及隐藏字段。某些字段针对数据库进行验证,而不仅仅是空白。
还有很多其他要求,为了简洁起见,我不会提及。这是我们的第一个项目!
我从哪里开始分离导航逻辑,验证逻辑,标签激活逻辑?
现在我在代码中拥有所有逻辑,因为我经常需要从其他表单控件和/或底层数据源获取值来确定是否允许切换选项卡,或者是否禁用工具栏按钮或显示错误消息等。
我见过有工资单和员工的SOLID。我们如何在UI设计中应用它?
如果有人偶然发现UI模式博客,请指出它们。我已经完成了“构建你自己的CAB”系列。
答案 0 :(得分:1)
我们有比这更复杂的逻辑。
这是一个关于可测性的论证,而不是反对的论据。
可悲的是,UI模式上没有书籍......如果有人偶然发现UI模式博客......
奇怪的是,有很多网站都在谈论UI模式。 http://www.google.com/search?hl=en&source=hp&q=UI+patterns&aq=f&oq=&aqi=g10
答案 1 :(得分:1)
好的,所以这是大多数模式的关键。
不要将您的程序视为一系列指令。可以将其视为一系列“服务器”,每个服务器都相互发送消息。当点击按钮时,UI'服务器'将消息发送到视图'服务器'。 View'服务器'向订单'服务器'发送消息以开始订单。订单'服务器'然后将消息发送回View'服务器',告知它有关订单的信息,并且View'服务器'向UI'服务器'发送消息,为其提供要显示的数据。
这是MVP模式真正意义的一个简单例子。如果它有所帮助,而不是考虑“服务器”,那么考虑一下人们互相发送信件。