日期:2014-05-17  浏览次数:20547 次

.net web页面(GUI)如何使用设计模式??请大家指点一下,分享一下你们使用的经验.
本人2年ASP,2年ASP.NET经验

学习了设计模式,重构,Microsoft .NET企业级应用架构设计,敏捷开发后.
想在现有的软件上使用设计模式来看来一些复杂的问题,但是感觉无从下手;

(感觉没.net方便的例子),WEB页面前台CS文件越来越臃肿,某些方法中判断越来越多,修改起非常困难、‘动一发,签全身’的感觉;增加一个简单的功能(互想影响),都要修改一周;

另外,感觉.net使用就是成天使用gridview,动态构造TABLE,,有点迷茫,,

请各位大侠指领一下菜鸟怎么在.net开发中使用设计模式和学习方向?

------解决方案--------------------
我们老师教我们用三层架构。
------解决方案--------------------
不要特意去追,在写代码的时候规范把自己的思路用这些模式慢慢来。
用经验和代码量来积累,很快就上路了。 


net使用就是成天使用gridview

呵呵这个初级阶段或者紧急赶项目的时候。 

------解决方案--------------------
asp.net少不了拖控件
------解决方案--------------------
可以看看安全方面和性能方面的书籍,另外试试在没有控件的时候是否还能实现同样的功能。2年了,看看数据结构和算法的书籍我想应该挺好的
------解决方案--------------------
可以尝试了解下MVC架构哇,里面不用gridview哦
------解决方案--------------------
又是刚看完书才有的问题把??

呵呵,我只能说你还没理解他

gui这块不需要用设计模式的,因为你在这块用设计模式得不偿失

UI变化剧烈,虽然设计模式是为了防止变化,但是对于一个在频繁变动的东西,你是无法做出准确抽象的。

一个很典型的比方,数学里的回归方程,只有当他成线性依赖的时候,你才有可能得到回归方程。

而一团变化剧烈的离散点,你是没办法得到回归方程的。

UI变化过与剧烈和随意,所以他很难抽象出固定的玩意。(客户一次拍脑袋的决议,就会让你的抽象完全废掉,所以聪明人是不会在这上面动啥脑浆的,你变化随意快速是吧,没关系,我只要能快速修改就ok)

那么UI有没有抽象?有,ui的抽象其实就是那些控件,当然如果你能达到编写固定逻辑控件的地步,你也不会问这个问题了


ps:对比一下ext和jquery你就明白在UI这块去抽象的结果有啥不一样了。ext就是企图在UI这块使用抽象的典型,但是谁用ext谁都知道。这个抽象的结果非常糟糕,因为很多不起眼小要求,就会让这个抽象崩溃掉。玩ext的人们,天天都在忙着在这里打个补丁,在那里贴块膏药。

而jquery就没有试图去搞这个抽象,jquery设计的精髓就是简单+快速+灵活。你变化快没有关系,只要足够简单,足够快速就ok。使用jquery是让人愉快的(尤其是和ext相比)
------解决方案--------------------
这得大师才能谈论的问题.
完全不在一个层次上
有请P哥!!!
------解决方案--------------------
三层架构就够了

可以搞个orm框架
------解决方案--------------------
WEB页面前台CS文件越来越臃肿,某些方法中判断越来越多,修改起非常困难

从你这句话,我觉着你应该从《重构》这本书开始读起

前面已经说UI不需要设计模式,不需要什么企业级应用架构(这两块是给真正的逻辑使用的)

那么UI需要什么?他就没啥手段了吗?其实不是大手术动不了,但是小手术是可以动的。这些小手术都在重构的范畴。比如大方法拆小方法,多重嵌套判定拆成有意义的单步判定,比如字段提升为属性-------这些全是重构的小手术

比如你举的这个例子,看看重构的第9章在讲什么?

第9章 简化条件表达式 237
9.1 Decompose Conditional(分解条件表达式) 238
9.2 Consolidate Conditional Expression(合并条件表达式) 240
9.3 Consolidate Duplicate Conditional Fragments(合并重复的条件片段) 243
9.4 Remove Control Flag(移除控制标记) 245
9.5 Replace Nested Conditional with Guard Clauses(以卫语句取代嵌套条件表达式) 250
9.6 Replace Conditional with Polymorphism(以多态取代条件表达式) 255
9.7 Introduce Null Object(引入Null对象) 260
9.8 Introduce Assertion(引入断言) 267

------解决方案--------------------
代码重构。将你的逻辑理清楚。哪些是变化的,哪些是不变的,将变化的封装起来.多看书多积累。多学习高手大神的代码,考虑他们为什么这样做。久而久之,代码也就写漂亮了。
推荐书:《代码整洁之道》《重构:改善既有代码的设计》
------解决方案--------------------
语言只是武器 思想才是软件灵魂
------解决方案--------------------
我不同意界面不能用设计模式这样的说法。

任何需要”设计”的东西都能用设计模式。

界面即使再复杂,也是用简单的东西组合而成的。里面同样也有“可变”的和“不变"的,同样有抽象的价值。
------解决方案--------------------
前面已经说了,UI被抽象出来的,那东西叫控件了。为了单纯一个UI去做控件,那叫镀金。而textbox能被写出来,那是因为他不是为了这一个UI。

同理,抽象不好的控件,比你没抽象更难受。ext画了好几年的功夫去做这个抽象,但这个抽象的太难受,谁用这个抽象谁都一股砸电脑的冲动。
------解决方案--------------------
呵呵,同感,关顾关顾