当前位置:编程学习 > wap >>

[求助]Qt与设计模式

这两天看了点儿《大话设计模式》,看到里面提到业务逻辑和界面逻辑要分开。我想问在Qt中能做到业务逻辑和界面逻辑完全分开吗?我觉得貌似做不到啊,因为比如图形界面里有个下拉菜单,那业务逻辑方面要根据下拉菜单的选项决定具体的操作,这就导致业务逻辑里面必然会出现图形相关的代码啊。还看到有人说Qt不需要什么设计模式,是吗?请各位大侠指点一下吧。 --------------------编程问答-------------------- 设计模式是一种方法论,无论你用什么工具去开发你的软件,方法论总是需要的。

不过,千万不要过度的去拆分业务逻辑和界面逻辑。要能正确的、理性的划分出哪些活是业务该做的,哪些活是界面该做的,否则就是过度设计了。

而且要充分的了解Qt可以帮我们做哪些事情,应该充分的利用Qt库为我们带来的方便。 --------------------编程问答-------------------- 设计模式主要是为了维护更方便,这个不是一个形式上的东西。
只要自己或他人维护更方便,那就是好的模式。 --------------------编程问答--------------------
引用 1 楼 xiachm 的回复:
设计模式是一种方法论,无论你用什么工具去开发你的软件,方法论总是需要的。

不过,千万不要过度的去拆分业务逻辑和界面逻辑。要能正确的、理性的划分出哪些活是业务该做的,哪些活是界面该做的,否则就是过度设计了。

而且要充分的了解Qt可以帮我们做哪些事情,应该充分的利用Qt库为我们带来的方便。


二楼正解,不要为了使用设计模式而去使用设计模式,具体还要看情况的 --------------------编程问答-------------------- 用Qt做MVC显然是非常容易的。

就拿你的例子来讲,你只需要知道是哪一个QAction被触发了,然后做出相应的操作就好了,根本不需要知道这个action到底是在下拉菜单还是工具栏或者是其他什么地方。 --------------------编程问答-------------------- 建议好好了解下Qt的signal/slot机制,这个对于MVC、组件之间的松耦合等来说是非常重要的一环 --------------------编程问答-------------------- 要写出可测试性的代码,有一条就是要做到UI和业务逻辑的解耦。
这其实有许多现成的实践可又参考。
参见Michael Feathers大师的文章 The Humble Dialog Box --------------------编程问答--------------------
引用 4 楼 zhu_xz 的回复:
用Qt做MVC显然是非常容易的。

就拿你的例子来讲,你只需要知道是哪一个QAction被触发了,然后做出相应的操作就好了,根本不需要知道这个action到底是在下拉菜单还是工具栏或者是其他什么地方。

假如下拉菜单下有几个选项,那我的槽里就要写相应的switch-case语句,感觉这样业务逻辑和界面逻辑就耦合了,不知这样理解的对不对。 --------------------编程问答--------------------
引用 7 楼 miseluocha 的回复:
假如下拉菜单下有几个选项,那我的槽里就要写相应的switch-case语句,感觉这样业务逻辑和界面逻辑就耦合了,不知这样理解的对不对。

每一个菜单的选项对应一个QAction --------------------编程问答--------------------
引用 8 楼 zhu_xz 的回复:
引用 7 楼 miseluocha 的回复:

假如下拉菜单下有几个选项,那我的槽里就要写相应的switch-case语句,感觉这样业务逻辑和界面逻辑就耦合了,不知这样理解的对不对。

每一个菜单的选项对应一个QAction

QAction这个类还没看,回头看一看,谢谢指点 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 很同意4楼的看法
比如qaction就是隶属于qtgui的
可以用signal-slot实现解耦合
这已经是很大的进步了 --------------------编程问答-------------------- 设计模式主要是为了维护更方便,这个不是一个形式上的东西。
只要自己或他人维护更方便,那就是好的模式。 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 学习过程中都是高手 --------------------编程问答-------------------- 表示不懂 --------------------编程问答-------------------- --------------------编程问答-------------------- RTHRT6YHTY56TYY5T --------------------编程问答-------------------- --------------------编程问答-------------------- dfdfsdfsdfsdfsdfsd --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 最近在学习QT~~搬板凳学习 --------------------编程问答-------------------- 非常感谢分享, --------------------编程问答-------------------- 关注下! --------------------编程问答-------------------- 城要去买东西部长辈你说吧唧了我在哪儿时时期限于一体重力求助教学院士,是吧我忙得很。 --------------------编程问答-------------------- 比如qaction就是隶属于qtgui的
可以用signal-slot实现解耦合
这已经是很大的进步了 --------------------编程问答-------------------- 学习。。。。 --------------------编程问答-------------------- 设计模式只是一些概念。。让你维护方便  最终还是看自己实现方法   --------------------编程问答-------------------- Switch-case也可以用到Qt里面吗?
--------------------编程问答--------------------
引用 1 楼 xiachm 的回复:
设计模式是一种方法论,无论你用什么工具去开发你的软件,方法论总是需要的。

不过,千万不要过度的去拆分业务逻辑和界面逻辑。要能正确的、理性的划分出哪些活是业务该做的,哪些活是界面该做的,否则就是过度设计了。

而且要充分的了解Qt可以帮我们做哪些事情,应该充分的利用Qt库为我们带来的方便。

一切都没有绝对的正确,要根据实际,用最有利的方法。。 --------------------编程问答-------------------- --------------------编程问答--------------------   你传值过去 不要值QLineEdit类似东西过去 不就解耦了  目的就在于此  --------------------编程问答--------------------
引用 4 楼 zhu_xz 的回复:
用Qt做MVC显然是非常容易的。

就拿你的例子来讲,你只需要知道是哪一个QAction被触发了,然后做出相应的操作就好了,根本不需要知道这个action到底是在下拉菜单还是工具栏或者是其他什么地方。

看来设计模式也需要在一定的平台基础上考虑,学习了。。。 --------------------编程问答-------------------- buhui --------------------编程问答-------------------- 设计模式主要是为了维护更方便,这个不是一个形式上的东西。
--------------------编程问答-------------------- --------------------编程问答-------------------- 表示对QT有兴趣 --------------------编程问答--------------------
引用 32 楼 yanyehe89 的回复:
Switch-case也可以用到Qt里面吗?

可以的。 --------------------编程问答-------------------- rfrfer --------------------编程问答-------------------- --------------------编程问答-------------------- 先不管设计模式,就面向对象的思想而言,目前我还没有遇到难抽象的问题,只要你设计时多想想,都应该会把业务逻辑和页面逻辑分开的。这么做是很必要的。设计模式只是现成的思想,会就用。 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 有这样的资料吗 跪求 --------------------编程问答-------------------- bucuo  --------------------编程问答-------------------- --------------------编程问答-------------------- 没理解什么叫逻辑与界面分开的就是没有理解类的三大特性 
自己回去反复理解类的三大特性吧 
封装 继承 和多肽  --------------------编程问答-------------------- 业务和界面分开即是说你把业务封装到一个类里,留出一个接口,在QT界面下可以通过接口实现业务,在MFC界面下也可以通过接口调用实现业务。
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,