论坛首页 Java企业应用论坛

IoVC,一种新的编程思想

浏览 62237 次
精华帖 (0) :: 良好帖 (6) :: 新手帖 (17) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-03-27  
lucky12345 写道
举的例子太狭窄,看不出有什么好的地方
后台本来是管理数据的,现在还要来管理前台显示,已经违背了MVC的思想了


人家楼主已经说了:IoVC让你具备了业务逻辑和UI之间双向交互的能力,但人家并没有让你把什么需要前台显示的东西放到后台来啊。
0 请登录后投票
   发表时间:2008-03-27  
pig345 写道
再具体到刚才的style的例子,其实怕是更加思路不清了。
当前的web基本上都要走DIV+CSS的路子,CSS的麻烦不比javascript少(相对于以前的table布局,抽象不直观,又有跨浏览器的问题,当前的2.0还有些限制不能100%随意布局),但是有一个好处就足以让我用它了,那就是可以让web随意换肤,而只要改动一行html就行了!
看看刚才的例子,如果都把style写到java code里面了,还怎么作网站换肤?
必将是这样一种情况:界面的些许改动,都导致java的代码变动(要重新编译,重新部署),这就是不遵循前人经验的恶果吧。

----------

口气有点重,希望是良药吧。


首先请"pig345"兄再观察一下笔者的语句:我并不认为将style放到后台Bean是最佳解决方案。
但同时,也请"pig345"兄考虑这样一个问题:(我的这个场景举的可能也有问题,但时间紧,一时半会想不到更合适的场景)
假设用户需要这样一种场景,在某个textField中,当用户输入某些不合法的字符,字体颜色变成红色,否则,字体颜色是蓝色。
并且,对这些字符是否合法的判断,需要到数据库中进行查询对比。
请问,这种场景,怎样解决最合适呢?

再回到楼主关于换肤的话题,何谓换肤?是指不影响用户业务逻辑的情况下,自由的更改应用系统的UI风格。
但上面的这个场景,它已经不是“换肤”所能解决的问题,这个场景本身就是用户的一种逻辑。
0 请登录后投票
   发表时间:2008-03-27  
不过给出的例子确实不能体现你所说的这些,希望是如你所说吧,不过要照顾到较多情况,可能本身也不比其他框架省多少了。

----------
这个省是指:简单,容易理解,且在框架没考虑到的情况下,不需要为克服框架写一些费解的代码。
0 请登录后投票
   发表时间:2008-03-27  
apusiczhang 写道

首先请"pig345"兄再观察一下笔者的语句:我并不认为将style放到后台Bean是最佳解决方案。
但同时,也请"pig345"兄考虑这样一个问题:(我的这个场景举的可能也有问题,但时间紧,一时半会想不到更合适的场景)
假设用户需要这样一种场景,在某个textField中,当用户输入某些不合法的字符,字体颜色变成红色,否则,字体颜色是蓝色。
并且,对这些字符是否合法的判断,需要到数据库中进行查询对比。
请问,这种场景,怎样解决最合适呢?

再回到楼主关于换肤的话题,何谓换肤?是指不影响用户业务逻辑的情况下,自由的更改应用系统的UI风格。
但上面的这个场景,它已经不是“换肤”所能解决的问题,这个场景本身就是用户的一种逻辑。


再具体的:你为什么不能在当用户输入某些不合法的字符给这个字段的时候,(在后台判断完成后,产生返回页面时),在这个字段上加上class='invalided_field'呢?
在css定义中完全可以在不同的界面方案(我说的皮肤)中,定义不同的.invalided_field{},从而使用不同的颜色/外框/背景色等等。。。

多多利用web本身提供的灵活性不是更好?

解决问题不要太急于看实现,退一步,抽象点会获得很多灵活性,这种思考方式对框架作者尤其重要阿。
0 请登录后投票
   发表时间:2008-03-27  
pig345 写道

再具体的:你为什么不能在当用户输入某些不合法的字符给这个字段的时候,(在后台判断完成后,产生返回页面时),在这个字段上加上class='invalided_field'呢?
在css定义中完全可以在不同的界面方案(我说的皮肤)中,定义不同的.invalided_field{},从而使用不同的颜色/外框/背景色等等。。。

多多利用web本身提供的灵活性不是更好?

有时候解决问题不要太急于看实现,退一步,抽象点会获得很多灵活性,这种思考方式对框架作者尤其重要阿。


你说的对,一定要充分利用Web本身提供的灵活性。
但现在的问题并不是强调是用style,或者styleClass,还是说把 style 或 styleClass 的内容放在页面中还是放在后台 Bean 中的问题,笔者一直想强调的是:假设style或者styleClass都已经定义好了(且不论它是定义在哪里),那么,如何根据用户的输入,来更改UI的表现。
IoVC,让你拥有了一种能够在后台Bean中影响UI表现的能力。
仅此而已。

0 请登录后投票
   发表时间:2008-03-27  
apusiczhang 写道
pig345 写道

再具体的:你为什么不能在当用户输入某些不合法的字符给这个字段的时候,(在后台判断完成后,产生返回页面时),在这个字段上加上class='invalided_field'呢?
在css定义中完全可以在不同的界面方案(我说的皮肤)中,定义不同的.invalided_field{},从而使用不同的颜色/外框/背景色等等。。。

多多利用web本身提供的灵活性不是更好?

有时候解决问题不要太急于看实现,退一步,抽象点会获得很多灵活性,这种思考方式对框架作者尤其重要阿。


你说的对,一定要充分利用Web本身提供的灵活性。
但现在的问题并不是强调是用style,或者styleClass,还是说把 style 或 styleClass 的内容放在页面中还是放在后台 Bean 中的问题,笔者一直想强调的是:假设style或者styleClass都已经定义好了(且不论它是定义在哪里),那么,如何根据用户的输入,来更改UI的表现。
IoVC,让你拥有了一种能够在后台Bean中影响UI表现的能力。
仅此而已。


这种在后台影响UI表现的能力,还是不要有的好!
0 请登录后投票
   发表时间:2008-03-27  
robbin 写道
upheart 写道
引用
页面美工只需要给每个组件设置一个ID,程序员在后台的业务逻辑中,便拥有对页面 UI 元素的完全控制力。
程序员可以拿过来直接用,并且, 如果要对页面做调整(只要不是页面元素的增加或删除),程序员可以在自己熟悉的代码中直接设置,这岂非是一种很享受的境界?


其实wicket之类的框架早就是这样了,而且页面还是纯html的,更利于和美工合作——既然金蝶的OperaMasks都把JSF改成这个样子了,为什么不再彻底一点,像Wicket、Tapestry直接用html而不是jsp的taglib呢?

OperaMasks做到现在这个样子还是很值得肯定的。

至于IoVC,我看还算不上什么编程思想,更不是什么新东西。


没错,我也是这种感觉。看看现在Warp-MVC就知道,IoVC早已经不是新鲜玩意,当然到这个词造的还不错。老实说还不如扔掉JSF这个包袱、大胆的走模板语言、Annotation的路。


To Robbin兄:
    1) 模版语言:OperaMasks 已经在路上,那就是 Facelets。
    2) Annotation:在 OperaMasks 2.0中,已经大量运用了 Annotation。Robbin兄人在上海,套用上海的一句方言是:“Annotation不要太多哦。”
    3) JSF:我们站在JSF规范之上,取之精华,弃其糟泊。我们克服了许多JSF规范中不尽人意的地方,如对状态的维护,但同时,吸取了JSF大量的精华所在,如:组件模型、生命周期等等。但至于是否完全彻底的抛弃JSF,坦白说,我们也正在思考。

0 请登录后投票
   发表时间:2008-03-27  
apusiczhang 写道
让你拥有了一种能够在后台Bean中影响UI表现的能力。

还是忍不住再说两句。如你所说,这个是IoVC的本质上要提供的。
然而就是这个能力,其实是完全有悖于MVC的,(似乎是四人帮还是其他资料里有个例子说道这个问题),MVC原则是Model中作业务规则的判定(具体到这里就是给出某字段是否正确的boolean),而怎么表现是各个不同View自己决定的。
注意是view查询model,然后自己作决定展现成什么样子,这个正是view和model的不同职责所在。

想象一下,如果这时候要你提供一个供其他系统查询/修改的基于web的接口(典型的需要是返回xml),你怎么作?能让两个不同的view(一个html的,一个xml的)使用同一个model?

说道这里忍不住要提到ROR了,可以看看他的MVC是怎么分离的。
0 请登录后投票
   发表时间:2008-03-27  
引用

这种在后台影响UI表现的能力,还是不要有的好!


为啥呢?

0 请登录后投票
   发表时间:2008-03-27  
sxsxsx3 写道
引用

这种在后台影响UI表现的能力,还是不要有的好!


为啥呢?


我想他的后台是指model。
由于view和model的不同职责所在,不能让model管理某个特定的view的展现逻辑,这样既会造成model的过分负担(如果有多种不同的view就更麻烦了),而又把view变成了白痴(连怎么展现自己都不能作主了)。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics