`
apusiczhang
  • 浏览: 17384 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

IoVC,一种新的编程思想

阅读更多

IoVC——“Inversion of View-Control”,即“视图控制反转”,换言之:它能够把对“View(即 UI 视图)的控制力”注入到你的后台业务逻辑中。这样一来,你在编写业务逻辑的过程中,对 View 拥有足够的控制力,从而能够将展现层与业务逻辑完全的解耦。

 

举一个场景:页面中有一个文本输入框,它的值对应后台的一个JavaBean的属性。我们首先来看一下传统的编程模型:

 

页面:
<w:textField value="#{myBean.value}"/>
后台:
public class MyBean {
    private String value;
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
}

 

此时,假设用户需要发生变化,我们需要设置文本输入框的tooltip,并且,它的值来自于后台 JavaBean 的另一个属性,那么,程序需要做如下调整:

 

页面:
<w:textField  value="#{myBean.value}" tooltip="#{myBean.tooltip}"/>
后台:
public class MyBean {
    private String value;
    private String tooltip;
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }    public String getTooltip() {
        return tooltip;
    }
    public void setTooltip(String tooltip) {
        this.tooltip = tooltip;
    }
}

 

我们可以观察:在传统的编程模型下,如果页面逻辑发生变化,我们首先需要修改UI展现层,加上 tooltip="#{myBean.tooltip}" 的语句,然后,再在后台Bean中设置此属性值。

那么,在IoVC编程模型下,情况又是怎样的呢?

 

页面:
<w:textField id="txt"/>
后台:
public class MyBean {
    @Bind(id="txt")
    private String value;
}

 

如果需要扩展文本编辑框的tooltip属性,只需要:

 

页面:
<w:textField id="txt"/>
后台:
public class MyBean {
    @Bind(id="txt")
    private String value;

        @Bind(id="txt" att="tooltip")
    private String tooltip;
}

 

在IoVC编程模型下,Web页面不需要发生任何变化,你只需要在后台 Java Bean 中写上这样一行属性声明即可@Bind(id="txt" att="tooltip") private String tooltip,甚至于你连传统的getter/setter都不需要。

 

换言之,在传统的编程模型下,页面美工通过网页设计工具“画”出来的页面,程序员看不懂; 而如果程序员对页面进行修改,则页面美工又无法理解; 并且,如果要更改业务逻辑,程序员需要不断的维护页面内容,最终造成页面美工与程序员无法协同工作。而在 IoVC 的编程思想下,页面美工只需要给每个组件设置一个ID,程序员在后台的业务逻辑中,便拥有对页面 UI 元素的完全控制力。Web页面在美工完成之后,程序员再也无需因为需求的变更或者逻辑的变化,而再重新维护 Web页面内容。

 

简而言之,IoVC是一种更好的MVC,是对MVC的一种高层次抽象。

 

设想一下:日后美工人员画出来的页面(只要设置了正确的ID),程序员可以拿过来直接用,并且, 如果要对页面做调整(只要不是页面元素的增加或删除),程序员可以在自己熟悉的代码中直接设置,这岂非是一种很享受的境界?

 

更多技术文章,请见:http://www.operamasks.org/

 

分享到:
评论
168 楼 free_chilly 2008-12-19  
hax 写道
apusiczhang 写道

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



虽是跟robbin同志说的,我也来凑个热闹。

关于annotation。

我觉得annotation是个好东西是无疑的,但是我们当然也知道它所带来的耦合。为什么anno那么红,我个人觉得是原先许多解耦是无必要的,比如ORM,在多数时候把ORM规则写到单独的xml里并没有提供什么好处,因为它本来就是依赖你的Object model的,反而造成维护不便。

但是UI就大大不同。UI和app logic(更不要说domain logic)的耦合永远是麻烦的根源。

实际上,我们的问题是UI自身的logic怎么办。因为UI要越来越复杂。过去我们被迫写在jsp/taglib里,这导致一个极大的问题,就是ui logic和app logic交织到一块儿了。诚然这两者之间的界限并不是清晰的,就如同app logic和domain logic一样,有时候边界是模糊的。但是确实是存在区分。否则就不会有UI组件一说。UI组件无非是要把UI逻辑给包起来,别泄漏到app logic里。

我认为真正你要解决的问题是如何UI归UI,app归app。所以出现问题不是你对UI控制力太弱,而是你对UI控制太多。这看似矛盾,实则是深层问题的必然结果。因为UI自己搞不定,只好你想点法子越俎代庖。

关于JSF,偶只有一点题外话,取精去粗,这固然好,但是如果你们不能影响JSF的规范的发展方向,那还是白搭。总得来说,我对JSF的印象就是:它是一个续命的技术,而不是一个创新的技术。


受教,精辟。
167 楼 free_chilly 2008-12-19  
lonlyleo 写道
这种标签不太喜欢,我喜欢jodd-form这种的,套一个tag就行了.

我现在越来越倾向用比较老而原始的东西,比如页面就是HTML+js,再加上一些jsp必须的东西,觉得对这些东西的包装越少越好;
想给一个input增加一个属性操作dom不也是易如反掌么?后台么,反正增加一个属性也是要作修改的.

我已经患上了框架/思想恐惧症.要说这IoVC是一种解决某种问题的实现方案可能还好一点.大词时代还没过去么?


我不是恐惧,我是发现越是倾向于比较老和原始的东西,反而在人员协同工作和开发效率上更高。
ibm宣称的理念很多,但在我的接触中,他们对于新技术的使用及其谨慎,国内的绝大部分企业客户应用,
都恰恰采用楼上的思路,简单而原始+少量的新技术框架。
166 楼 fyjava 2008-04-06  
<div class='quote_title'> 写道</div><div class='quote_div'>叫hax的好像只有我一个。不过爱民的书好像还没有上市。</div> <p><span style=''> </span></p><p><span style=''>这是谁呀?难道换了个马甲咱就不认识了?

看你这叫得累的,歇歇吧。讲3个故事让大家都轻松下:

</span></p><p><span style=''> </span></p><p><span style=''>【故事一】</span></p><p><span style=''> </span></p><p><span style=''>

   秦汉时代,我国西南地区居住着许多部落。汉初,由于朝廷忙着平定内乱和对付北方匈奴的侵犯,没有余力顾及到遥远的西南地区,而西南的这些部落也从不知道外面的世界。</span></p><p><span style=''>

  西南地区的这些部落都很小,他们散住在山中、林问。其中有一支名为“夜郎”的部落,就算是很大的了。   </span></p><p><span style=''>

  夜朗部落有个首领名叫多同。在他眼里,夜郎就是天底下最大的国家了。一天,他骑马带着随从出外巡游,他们来到一片平坦的土地上,多同扬鞭指着前方说:“你们看!这一望无边的疆土,都是我的,有哪一国能比它大呢?”</span></p><p><span style=''>

  跟随一旁的仆从连忙献媚说:“大王您说的很对,天下还有哪一国比夜郎更大呢!”多同心里沾沾自喜。</span></p><p><span style=''>

  他们又来到一大片高山前,多同仰起头,看着巍峨的高山说:“天下还找得到比这更高的山吗?”

</span></p><p><span style=''>  随从连忙应和说:“当然找不到,天下哪有比夜郎的山更高的山呢!”</span></p><p><span style=''>

  后来,他们来到一条江边,多同跳下马来,指着滔滔江水说:“你们看,这条江又宽又长,这是世界上最长最大的河了。”

</span></p><p><span style=''>  随从们没有一个不同意的,都齐声说:“那是肯定的。我们夜郎是天下最大的国家。”

</span></p><p><span style=''>  这次出游以后,夜郎国的人更加自大起来。

</span></p><p><span style=''>  汉武帝时候,武帝派使者出使印度,经过夜郎国。</span></p><p><span style=''>

  夜郎的首领多同从没去过中原,根本不知道中原是怎么回事。于是他派人将汉朝使者请进部落帐中。多同问汉朝使者说:“汉和夜郎相比,哪个大些?”

</span></p><p><span style=''>  汉使者听了多同的问话,不禁哈哈大笑起来,他回答说:“夜郎和汉是完全不能相比的。汉朝的州郡就有好几十个,而夜郎的全部地盘还抵不上汉朝一个郡的地盘。你看,哪一个大呢?”</span></p><p><span style=''>

  多同一听,不禁目瞪口呆,满脸羞愧。</span></p><p><span style=''>

  生活中也是这样,见识越广的人越懂得谦虚,而见识愈短浅的人反而愈盲目自大。</span></p><p><span style=''> </span></p><p><span style=''>【故事二】</span></p><p><span style=''> </span></p><p><span style=''>

  

从前,有一只青蛙住在一口井里。一天,他遇见一只东海来的海龟。他立刻对这只海龟说:“你看,我住的地方多好。如果我高兴,我就跳上去看看天。我要是累了,就找个洞休息。你瞧瞧这些可怜的螃蟹、蝌蚪,他们怎能跟我比?我才是这的主人,我的家是世界上最好最舒服的地方。如果你愿意,你可以到我这来参观。” 青蛙的话打动了这只海龟。他就向青蛙的家爬去。可刚刚开始爬,就绊了一跤。他向青蛙抱怨道:“这地方这么小有什么好,你到我的家东海去看看,你就会知道什么是好地方。那里可大呢!” 可是青蛙从没见过海,根本想象不出海有多大。 后来,人们就用“坐井观天”来比喻一个人的思想狭隘。</span></p><p><span style=''> </span></p><p><span style=''>

  

</span><span style=''>

Long long ago, a frog lived in a well. One day, he met a turtle who came from the Eastern Sea. He boasted to the turtle: "Look, how nice my well is! If I'm in high spirits, I 'll jump on the rim of the well and see the sky. If I 'm tired, I 'll find a hole for a rest. Look at these poor crabs and tadpoles, How can they compare with me? I 'm the master here and my home is the best place in the world. Would you like to have a visit?" The turtle was fascinated by his sweet words. Then the turtle crept to the well. As soon as the turtle began to move, he stumbled over the railing. Then he complained to the frog:" What a narrow place! If you see the vast Easton Sea where I live, you'll know how happy life there can be." The frog could not imagine how vast the sea is, as he has never seen it. Later, people use it to describe the ones who have a very narrow view.

</span></p><p><span style=''> </span></p><p><span style=''>【故事三】

</span></p><p><span style=''> </span></p><p><span style=''>  赵奢是赵国名将,为赵国屡建战功。可是赵奢的儿子赵括却不像父亲。赵括从小的确读了不少兵书,谈起用兵之道那简直是滔滔不绝,连他父亲都不如他。于是,赵括自以为是,觉得自己是了不起的军事家,他狂妄地认为自己在军事上已经是天下无敌了。然而赵奢却不这么认为,他不但从未赞扬过儿子的夸夸其谈,反而却常常担忧地说:“日后赵国不让赵括带兵便罢,如果让他带兵打仗,那么断送赵国前程的将必是赵括无疑。”

</span></p><p><span style=''>  过了几年,赵奢死去了。</span></p><p><span style=''>

  这一年,秦国对赵国大举进攻,赵国派了年龄很大的将军廉颇率军迎敌。开始,赵军连连失利。在这样的情况下,廉颇改变战略方针,他下令让军队坚守城池,以逸待劳,不要主动出击,保存实力把住阵地从而拖垮秦军。结果真的,秦军由于远道而来,经不住廉颇的拖延,粮草渐渐接不上,快要支撑不下去了,秦军十分恐慌。于是秦军也施展汁谋,派人悄悄潜入赵国散布流言说:“秦军谁都不怕,就怕赵括担任大将。”

</span></p><p><span style=''>  赵王正在为廉颇在军事上毫无进展而闷闷不乐,听到外面流传的那些说法,便撤掉廉颇,要派赵括为大将来统帅军队。赵括的母亲记住丈夫生前的嘱咐,再三向赵王说明情况,极力劝告赵王收回决定,可是赵王哪里听得进去,他真的任命了赵括担任大将来取代廉颇。</span></p><p><span style=''>

  赵括一到前线,便开始胡乱指挥起来。他完全改变了廉颇的策略,大量撤换将官,一时间弄得人心惶惶军心涣散。</span></p><p><span style=''>

  秦军得知赵军这些情况,自然正中下怀。一天深夜,秦军派一支队伍偷袭赵营,刚一交战,便佯装败走。同时,秦军又派兵乘机切断了赵军的粮道。</span><br/><span style=''>

  </span><span style=''>赵括不知实情,还以为秦军真的是败逃。他得意地想,取胜即在眼前,这正是表现自己的时候。于是他命令部队紧紧追击。结果,赵军追了一段后即被秦军伏兵将追兵拦腰截断,使赵军首尾不能相顾。然后,秦军一齐杀出,将赵军各个击破,团团围住。</span></p><p><span style=''>

  赵军被秦军围困40多天,粮食早已吃光又没有接应,一时间军心大乱。赵括一筹莫展,满肚子的兵法也不知如何施展。眼看守下去也是活活饿死,便率军仓皇突围。可是怎敌秦军四面掩杀,哪里突得出去。结果赵括被乱箭射死,40万赵军也全军覆没。从此以后赵国就一蹶不振。</span></p><p><span style=''>

  赵括纸上谈兵并无真才实学,而赵王还对他委以重任,结果招致惨痛失败。看来,教条主义的危害是不可轻视的。</span></p>
165 楼 aah_aah 2008-04-05  
hax 写道
关于elite,我只是说它的介绍自相矛盾。我并没有说elite本身好或不好,语言这个领域我不是专家,如果要有人来评判,或许ajoo可以。


如你所说,你根本就不懂,就捡着人家一句两句话,便极尽挖苦嘲讽之能事,这样的“评判”有何意义?



164 楼 hax 2008-04-04  
关于elite,我只是说它的介绍自相矛盾。我并没有说elite本身好或不好,语言这个领域我不是专家,如果要有人来评判,或许ajoo可以。
163 楼 hax 2008-04-04  
aah_aah 写道
hax,你知道人家说的elite是干什么用的吗?在aom中,你甚至可以完全抛开Java用elite做一个程序。
按照人家的说法,你可以在后台用elite(当然也可以集成java)调用业务逻辑,也可以通过IoVC影响UI,这怎么又自相矛盾了呢?
要想批评人家,就不妨把人家做的东西全盘理解透彻了以后再说,否则,一叶障目,不见泰山,一知半解的情况下就大肆嘲讽,说什么“糟蹋JSF”诸如此类的言语,你不觉得惭愧吗?

我承认,我是和AOM有点关系,我是他们的用户,他们曾经给我们公司进行过AOM的培训。
思想不思想的我不想谈,至少我认为,AOM给我带来了开发效率的提升,仅评这一点,至少我很满足。

扯吧扯吧,跟一个满口'丫丫'的人,有什么道理可讲?



有些人总以为别人什么都不知道。你看懂我批评什么了吗?

还有,你看不出自相矛盾在哪里?那好,你再好好看看吧。很简单的。就那么几行字而已。

还有恭喜AOM有你这样好糊弄的客户。

还有,我看别人说话,是看他说的有没有道理,而不会管他说了几个脏字,何况“丫”字还够不上脏字,只不过是一种修辞手法而已。
162 楼 aah_aah 2008-04-04  
同时,对aom的人也想说两句:
1)质量要迅速稳定,我们已经不需要什么新特性了。
2)案例和文档要丰富,别总是那几个简单的例子,以让别人说闲话。

祝aom一路走好!
161 楼 aah_aah 2008-04-04  
hax 写道

不看不知道,一看吓一跳。AOM专做反其道行之的事情。

我现在很同情JSF了,被AOM这样糟尽。。。

BTW我摘录的是第一段和最后一段。大家可以发现其中的自相矛盾之处吗?


“OperaMasks已经在JSR-252的基础上对表达式语言做了大量的扩充,已经成为一种全新的表达式语言,我们将其命名为ELite,意为其源于EL表达式,同时又有轻量(Lite)的含义。

在OperaMasks的IoVC框架之下,EL已经很少出现在视图中,而在业务层将更多地使用EL来简化业务模型的开发,例如注入依赖对象、发送模型事件等。因此,JSR-252所定义的表达式语言已经不能满足要求,我们必须设计一种功能更强大的表达式语言来灵活地访问和操纵业务模型对象。
……
到现在为止,您还认为ELite是一种简单的表达式语言吗? ELite现在已经演化成为一个功能强大的动态语言,它脱胎于LISP这门古老而伟大的语言,同时又具有与Java相近的语法形式,可以容易地调用Java所写的程序代码,以及提供了方便灵活的集合操作函数,使其成为编写展现层逻辑的一种奇妙的选择。”

看到Elite,我想到了JS。因为Elite又是一种胶合语言,起的作用和JS如出一辙。只不过Elite在服务器端,而JS在浏览器端。

早晚(就2、3年最多了)会发展出强大的B端组件模型(ext就是明证),而加上DWR/Sajax这样的模式之后,抛开皮相的差别,编程模式最终还是归于一统。

唯一差别是多少在Browser,多少在Server而已。AOM说我能把Server端的逻辑靠ajax搬点到Browser上,但是大家自己直接用DWR不行吗?唯一的优势或许是Elite语言比JS好一点?不过这点优势实在是太不堪一击了。

如果有人要扯IDE支持、JSF组件模型优势……那就扯吧,反正扯扯无伤大雅。



hax,你知道人家说的elite是干什么用的吗?在aom中,你甚至可以完全抛开Java用elite做一个程序。
按照人家的说法,你可以在后台用elite(当然也可以集成java)调用业务逻辑,也可以通过IoVC影响UI,这怎么又自相矛盾了呢?
要想批评人家,就不妨把人家做的东西全盘理解透彻了以后再说,否则,一叶障目,不见泰山,一知半解的情况下就大肆嘲讽,说什么“糟蹋JSF”诸如此类的言语,你不觉得惭愧吗?

我承认,我是和AOM有点关系,我是他们的用户,他们曾经给我们公司进行过AOM的培训。
思想不思想的我不想谈,至少我认为,AOM给我带来了开发效率的提升,仅评这一点,至少我很满足。

扯吧扯吧,跟一个满口'丫丫'的人,有什么道理可讲?

160 楼 hax 2008-04-03  
叫hax的好像只有我一个。不过爱民的书好像还没有上市。
159 楼 dboylx 2008-04-03  
您是周爱民在Javascript书里提到过的HAX?
158 楼 hax 2008-04-03  
这里我再说一下@BeforeRender作为例子。一直有人咬定我不懂JSF,我一直没发声音。既然正主回来了,我就说说。

其实我一直强调的是你带给开发者怎样一种开发模式。譬如ROR他给开发者就有很清晰的套路。而@BeforeRender就是一个看不出套路的东西。只是因为JSF有Render阶段,你就把它暴露给一般开发者,这是没有道理的。按照我对JSF的粗浅理解,只有组件开发者才可能会需要像BeforeRender这样的功能。我认为按照JSF的理念,一般开发者是没有必要去接触Render阶段的。特别是你在managedbean上更没有什么理由一定要在render之前干什么事情。如果你引入这样一个@BeforeRender,实际上引诱了一般开发者不恰当的乱用。比如像IoVC例子里那样,用@BeforeRender进行字段初始化,我认为就实在是太拙劣了。
157 楼 hax 2008-04-03  
嗯。我希望AOM能真正做出好东西来。

之前有人质问我,你咋不做个框架出来呢?其实这不是说我要做一个框架就能做出来。真正要做到一个有商业目标的完整的产品,靠个人是不可能的,一定要有资源,而在国内这样的资源更是稀缺。金蝶现在有资源,所以更希望金蝶不要把精力浪费在华而不实的东西上。

还有,我讲的那些思路也没有什么了不起,都是我从其他设计和框架中学来的。譬如在view中分离model和ui controls,就是从XForms中学来的。既然没有什么真正创见,我认为我自己就没有必要去花力气做。相反,我在某些领域,譬如JS、CSS等还算有点独创性,所以我会做这些方面的工作。

AOM的问题我认为有两个,第一是JSF思路的牵制,我们看到AOM也看到了JSF的一些问题,希望能做一些突破,譬如IoVC,然而恰恰是IoVC的设计过于草率(至少就我看到的描述)使得其似乎还不如JSF原本中规中矩的设计合理。第二就是自己整个开发理念和模式尚未似乎有统一认识,常出现自相矛盾的地方。比如Elite的介绍文字。
156 楼 xyz20003 2008-04-03  
在国内搞技术研发什么的,一定要脸皮厚,不要怕被骂,有骂声才有发展,能容忍才有进步。

更何况hax完全是好意,帖子里都是讨论技术的成分,又不是无理取闹。

俗话讲,兼听则明,希望aom一路走好。
155 楼 apusiczhang 2008-04-03  
这几天一直在外面出差,不能及时上网。看到这篇文章受到大家如此的关注,欣慰之余又颇有几份惶恐。
简单谈一下我的个人看法:

技术上:软件技术原本就没有绝对的优秀与粗劣,尤其在谈这种理念、模式之类的东西。IoVC只是我们的一种思考与探索,各位的一些意见我们会积极吸收。但同时需要指出的是:把IoVC等同于几个@Bind的标注,再或者id的指定等等,确实是有些片面。至于“心虚”与否,呵呵,我们向来是很“虚心”的听取各位的意见。虚心,但绝非心虚,呵呵,没偷没抢的,为什么要心虚呢?

情感上:这里也不想去扯什么民族软件的大旗,我们只是在做我们自己的一份事情而已。感谢各位对OperaMasks的厚爱,各位的鼓励会成为我们不断前进的动力,而各位的批评,无论是善意的还是非善意的,我们该听取的一定会听取,该一笑而过也会一笑而过。

行动上:说不如做,且让我们静下心来,把程序写好,把产品做好,这才是我们的本份。

再次感谢大家的关注!
154 楼 dboylx 2008-04-03  
上星期刚参加北京的英雄大会,金碟的技术总监唯一的一场演讲就是这个项目,可以看出金碟高层对些项目的重视。

前两天从CVS上下载了项目源码,JSF组件设计相当的精巧与老练。实现相当漂亮,佩服一个~~赞一个先。

看了很多HAX大师与英雄们的讨论,想听听袁老大对此是什么看法,设计者什么想法。
153 楼 hax 2008-04-03  
黄皮肤黑眼珠又怎么样了?日本人朝鲜人越南人都是黄皮肤黑眼睛。

我最烦扯什么民族大旗了。

我做不做框架跟我能不能批评AOM有什么关系?
152 楼 asheng88 2008-04-03  
令狐不冲 写道
兄弟客气,&ldquo;根正苗红&rdquo;实不敢当。金蝶白手起家,靠技术靠拼命。老徐老蔡,三四十岁已头发花白。争得就是一丝基础软件血脉。
中国人做点东西不容易,叫的响了一点,吼的急了一点也是希望有人关注。众人拾柴火焰高,以一家之力做好一个社区显然不实际。
各位低手高手高高手,恳请多些理解,少些嘲讽;多些宽容,少些争斗;多些建议,少些叫板。再怎么说,咱还都是黄皮肤黑眼珠。

说得好,hax貌似高人,放个框架到社区来让大伙瞧瞧?
151 楼 xxjhappy 2008-04-03  
---重复提交,编辑掉---
150 楼 xxjhappy 2008-04-03  
hax 写道

还有,IoVC既然是新的不成熟的东西,那就表急吼吼的自称什么新思想,比MVC更好的MVC……

金蝶本来根红苗正,不是我看不惯他,实在是他自己太浮躁。丫如果真腰板(技术)够硬,十个我也拿他没辙不是么。


我有时看着hax兄的逻辑就真的不知是哭好还是笑好。这个回贴不谈技术,只谈逻辑。一说技术最后又给扯到什么非技术因素上,闷。。。

IoVC既然是新的不成熟的东西,那就表急吼吼的自称什么新思想。 —— 思想和实现是有区别的好不好。就象hax兄的理想框架一样,思想新颖,考虑周全,而且如果做的话,功能将会非常强大。但是你一天不做,思想再高也没用,等到你哪天做出来了,我们再来探讨完善不完善,成熟不成熟的问题。但有一点我是挺肯定的,如果有一天hax兄真的挺身而出,组建一支团队,雄心勃勃地把理想中的框架实现出来之后,他会悄悄的在javaeye上脚踏实地的发个不起眼的小贴,说“小弟不才,做了个小小的程序,可以适度增强大家对MVC框架的理解,请大家赏脸帮忙试用。下载地址 www.334455.com,人格保证,绝无病毒,请放心使用。”

金蝶本来根红苗正,不是我看不惯他,实在是他自己太浮躁,(于是我看不惯他)。—— 一句话里面直接就前后矛盾了。

丫如果真腰板(技术)够硬,十个我也拿他没辙不是么。 —— 你现在拿人家有撤么?什么叫“丫如果。。。”
149 楼 令狐不冲 2008-04-03  
<div class='quote_title'>hax 写道</div><div class='quote_div'><div class='quote_title'>anakin1978 写道</div><div class='quote_div'>不管它是好猫还是坏猫,IoVC既然是新东西,就必然会有不完善的地方,比如前面讨论中提到的两个UIControl不能使用同一个id来绑定这个问题,也许目前不能绑定吧(俺还没试过,也不知道真伪,现在忙的很),但AOM团队就把它做成能用一个id来绑定又怎么了?这个设计不难吧?下面俺来越俎代庖一下,UIControlI是个接口,现在提供两个实现,一种是常规的,叫UIControlSimple,把它看成原来一个id只能绑一个时的实现,一个是新添加的,叫UIControlComposite,它持有一个view中所有该id对应的UIControlSimple实例,接下来,对UIControlComposite的所有操作,都被适配到真正的UIControlSimple上去了,这样ok吧?当然,这里还有问题,我希望我在其中一个ui上动作不会导致两个ui响应,这里还要做些特殊处理,可以偷偷摸摸的给具有相同id的ui渲染一个特殊标识出来,这样,就可以找到对应的UIControlI实例了。这个思路是否有问题,还请各位点评,俺要偷懒了,玩游戏去。。。</div><br/><br/><br/>id是唯一标识符好不好。你至少要懂得换个属性成不成。 <br/>所以,你就别给AOM添乱了,人多厉害啊,你想到的他们能想不到么? <br/><br/>还有,IoVC既然是新的不成熟的东西,那就表急吼吼的自称什么新思想,比MVC更好的MVC…… <br/><br/>金蝶本来根红苗正,不是我看不惯他,实在是他自己太浮躁。丫如果真腰板(技术)够硬,十个我也拿他没辙不是么。</div><p> </p><p>兄弟客气,“根正苗红”实不敢当。金蝶白手起家,靠技术靠拼命。老徐老蔡,三四十岁已头发花白。争得就是一丝基础软件血脉。 </p><p> </p><p>中国人做点东西不容易,叫的响了一点,吼的急了一点也是希望有人关注。众人拾柴火焰高,以一家之力做好一个社区显然不实际。</p><p> </p><p>各位低手高手高高手,恳请多些理解,少些嘲讽;多些宽容,少些争斗;多些建议,少些叫板。再怎么说,咱还都是黄皮肤黑眼珠。</p><p> </p>

相关推荐

    AOM介绍-Web开发敏捷之道.

    OM提供了一种简化的编程模型,通过使用如`w:textField`、`w:button`、`w:dataGrid`等组件标签,以及`@Bind`、`@ValidateLength`、`@DataModel`、`@Action`等注解,开发者可以轻松地实现数据绑定、校验、动作处理等...

    OperaMasks快速进阶

    OperaMasks是一个开箱即用的Web开发解决方案,它的关键特性包括IoVC的编程思想,使得页面设计与控制逻辑分离。此外,它还内置了Ajax支持和丰富的UI组件库,适合开发高交互性Web应用和轻量级、高并发的Web站点。...

    电镀生产线中西门子S7-300 PLC控制程序详解及其应用

    内容概要:本文详细介绍了应用于电镀生产线的西门子S7-300 PLC控制系统的程序设计、硬件配置以及调试过程中积累的实际经验。主要内容涵盖温度控制、条码记录、行车定位、故障排查等方面的技术细节。文中展示了多个关键功能模块的具体实现方法,如PID温度控制、条码数据处理、行车定位判断等,并分享了一些实用的调试技巧和注意事项。此外,还讨论了硬件配置中的重要细节,如模块地址分配、网络拓扑设计等。 适合人群:从事自动化控制领域的工程师和技术人员,尤其是对PLC编程有一定基础的人群。 使用场景及目标:适用于需要深入了解和掌握电镀生产线自动化控制技术的专业人士。目标是帮助读者理解S7-300 PLC在电镀生产线中的具体应用,提高实际项目的开发效率和可靠性。 其他说明:文章不仅提供了详细的程序代码示例,还分享了许多来自一线的真实案例和实践经验,对于解决实际工程中的问题具有很高的参考价值。

    COMSOL仿真中固体超声导波的二维建模与分析:基于汉宁窗调制的200kHz正弦激励信号

    内容概要:本文详细介绍了使用COMSOL Multiphysics进行固体超声导波的二维仿真过程。作者通过建立一个10mm×100mm的铝板模型,应用汉宁窗调制的5周期200kHz正弦激励信号,研究了超声导波在铝板中的传播特性及其模式转换现象。文中涵盖了从模型构建、材料参数设置、网格划分、边界条件设定、激励信号施加到求解设置以及结果分析的完整流程。特别强调了汉宁窗调制的作用,即减少频谱泄漏并提高信号质量。 适合人群:从事超声检测、材料科学、物理学等相关领域的研究人员和技术人员,尤其是那些希望深入了解COMSOL仿真工具及其在超声导波研究中应用的人群。 使用场景及目标:适用于需要精确模拟超声波在固体介质中传播的研究项目,旨在验证理论预测、优化实验设计、评估不同材料和结构对超声波的影响。此外,还可以用于教学目的,帮助学生掌握COMSOL软件的操作方法和超声导波的基础知识。 其他说明:文中提供了详细的参数设置指导和代码片段,有助于读者快速复现仿真过程。同时,作者分享了一些实用技巧,如如何正确设置网格大小、选择合适的窗函数等,以确保仿真结果的准确性。

    离职人员分析仪表盘.xlsx

    离职人员分析仪表盘.xlsx

    基于LabVIEW的多功能虚拟函数信号发生器设计与信号分析

    内容概要:本文详细介绍了如何利用LabVIEW搭建一个多功能的虚拟函数信号发生器及其信号分析功能。首先,文章展示了如何通过LabVIEW的前面板和程序框图创建各种常见波形(如正弦波、方波、三角波等),并深入探讨了波形生成的具体实现方法,包括三角波的周期性和斜率计算、白噪声的生成以及自定义公式的解析。接着,文章讨论了信号处理的关键技术,如自相关分析、频谱分析、积分和微分运算,并提供了具体的实现代码和注意事项。此外,文中还分享了一些实用的经验和技术细节,如避免频谱泄漏的方法、处理多频波的技术、防止内存泄漏的措施等。 适用人群:从事信号处理、电子工程、自动化控制等领域的工作技术人员,尤其是那些熟悉或希望学习LabVIEW编程的人士。 使用场景及目标:适用于实验室环境或教学环境中,用于替代传统物理信号发生器进行信号生成和分析实验。主要目标是提高信号生成和分析的灵活性和便捷性,减少对昂贵硬件设备的依赖。 其他说明:本文不仅提供了详细的代码示例,还分享了许多作者在实践中积累的经验教训,帮助读者更好地理解和应用LabVIEW进行信号处理。

    线性代数_矩阵运算_方程组解释_MIT公开课笔记用途_1742822302.zip

    线性代数

    大雾至尊版V56泛滥无密码.zip

    大雾至尊版V56泛滥无密码.zip

    员工生日关怀方案.doc

    员工生日关怀方案

    试用期情况跟踪表.xls

    试用期情况跟踪表.xls

    员工激励机制与技巧.doc

    员工激励机制与技巧

    员工晋升的自我评价.doc

    员工晋升的自我评价.doc

    基于51单片机protues仿真的多功能婴儿车控制器(仿真图、源代码、AD原理图)

    基于51单片机protues仿真的多功能婴儿车控制器(仿真图、源代码、AD原理图) 该设计为51单片机protues仿真的多功能婴儿车控制器,实现温湿度,音乐,避障,声音监测控制; 1、温湿度检测,婴儿尿湿时会有提醒。 2、声音检测,当婴儿啼哭时也会有提醒。 3、小车避障,小车遇到障碍会后退左转。 4、音乐播放。 5、仿真图、源代码、AD原理图;

    【计算机求职笔试】编程语言基础、数据结构与算法、系统设计等核心考点解析及备考建议介绍了计算机求职笔试

    内容概要:本文档详细介绍了计算机求职笔试的内容与解答,涵盖编程语言基础、数据结构与算法、编程实践与调试、系统设计与软件工程以及综合题型与开放题五个方面。编程语言基础部分强调了语法规则、数据类型与运算符、面向对象编程的核心概念;数据结构与算法部分讲解了常见数据结构(如线性结构、树与图、哈希表)和高频算法(如排序算法、动态规划、递归与回溯);编程实践与调试部分关注编码能力和调试技巧;系统设计与软件工程部分探讨了设计模式、模块化设计、数据库与网络知识;综合题型与开放题部分则提供了场景题和逻辑思维题的示例。最后给出了备考建议,包括知识体系构建、刷题策略和模拟实战的方法。 适合人群:即将参加计算机相关职位笔试的求职者,特别是对编程语言、数据结构、算法设计有初步了解的应届毕业生或初级工程师。 使用场景及目标:①帮助求职者系统复习计算机基础知识,提升笔试通过率;②通过例题和解答加深对编程语言、数据结构、算法的理解;③提供模拟实战环境,提高时间管理和抗压能力。 阅读建议:建议按照文档提供的知识体系顺序进行系统复习,重点攻克高频题型,利用在线平台刷题练习,并结合实际项目经验进行综合应用,同时注意时间管理和抗压能力的训练。

    SecureCRT安装包

    SecureCRT安装包

    物流业人才流失与紧缺现象的对策研究.docx

    物流业人才流失与紧缺现象的对策研究

    招聘渠道费用仪表盘P10.pptx

    招聘渠道费用仪表盘P10.pptx

    五相永磁同步电机Simulink中PI双闭环SVPWM矢量控制建模与优化

    内容概要:本文详细介绍了五相永磁同步电机在Simulink环境下的PI双闭环SVPWM矢量控制建模过程及其优化方法。首先阐述了五相电机相比三相电机的优势,如更小的转矩脉动和更强的容错能力。接着探讨了复杂的Simulink模型搭建,涉及电机本体模块、坐标变换模块、SVPWM模块和PI调节器模块等多个组件。文中提供了具体的Clark变换和PI调节器的代码示例,解释了双闭环控制的工作原理,并详细描述了SVPWM与十扇区划分的具体实现方式。最后展示了模型的性能表现,包括良好的波形质量和快速的动态响应特性。 适合人群:从事电机控制领域的研究人员和技术人员,尤其是对五相永磁同步电机和Simulink建模感兴趣的读者。 使用场景及目标:适用于希望深入了解五相永磁同步电机控制原理并掌握具体实现方法的研究人员和技术人员。目标是帮助读者理解五相电机的特殊性和复杂性,掌握PI双闭环SVPWM矢量控制的建模技巧,提高电机控制系统的设计水平。 其他说明:文章不仅提供了理论知识,还包括了大量的代码片段和实践经验分享,有助于读者更好地理解和应用相关技术。

Global site tag (gtag.js) - Google Analytics