ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久一区,高清av电影在线观看,欧美国产日韩在线观看 http://www.aygfsteel.com/canonical/category/4849.htmlzh-cn Sun, 08 May 2011 22:31:23 GMT Sun, 08 May 2011 22:31:23 GMT 60 从é¢å‘对象到é¢å‘åˆ‡é¢ http://www.aygfsteel.com/canonical/archive/2011/05/08/349771.htmlcanonical canonical Sun, 08 May 2011 04:07:00 GMT http://www.aygfsteel.com/canonical/archive/2011/05/08/349771.html http://www.aygfsteel.com/canonical/comments/349771.html http://www.aygfsteel.com/canonical/archive/2011/05/08/349771.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/349771.html http://www.aygfsteel.com/canonical/services/trackbacks/349771.html
2. é¢å‘对象(OOP)指出åQŒåœ¨˜q™ä¸€é¢†åŸŸä¸Šå¯ä»¥å¾ç«‹åˆ†¾l?group)¾l“æž„åQšä¸€¾l„相关的å˜é‡å’Œå‡½æ•°æž„æˆä¸€ä¸ªé›†åˆï¼Œæˆ‘们¿UîC¹‹ä¸ºå¯¹è±?Object)ã€‚åŒæ—¶åœ¨åˆ†ç»„¾l“构上å¯ä»¥å®šä¹‰ä¸€ä¸ªè¿½Ž?推ç†)关系: D > B, ‹z„¡”Ÿ¾c»D从基¾c»B¾l§æ‰¿åQˆinheritance)åQŒç›¸åº”çš„‹z„¡”Ÿå¯¹è±¡½W¦åˆåŸºç±»å¯¹è±¡æ‰€æ»¡èƒö的所有约æŸã€‚æŽ¨ç†æ˜¯æœ‰äh(hu¨¢n)值的åQŒå› ä¸ºæ ¹æ?D > B, B > A å¯ä»¥è‡ªåŠ¨æŽ¨å¯¼å‡?D > AåQŒæ‰€æœ‰é’ˆå¯¹Açš„æ–a€åœ¨ç†è®ÞZ¸Šå¯¹D都æˆç«?˜q™ä¹Ÿž®±æ˜¯æˆ‘们常说çš?#8220;‹z„¡”Ÿå¯¹è±¡ is a 基类对象”)ã€‚ç¼–è¯‘å™¨ä¹Ÿèƒ½æœ‰ç‚¹æ™ø™ƒ½äº†ã€?br />
一个有‘£çš„地方是,D > Bæ„味ç€åœ¨Då’ŒB之间å˜åœ¨ç€æŸç§å·®å¼‚åQŒä½†æ˜¯æˆ‘们崿— 法把它昑ּ的表辑ևºæ¥ï¼ä¹Ÿå°±æ˜¯è¯´åœ¨ä»£ç 层é¢ä¸Šæˆ‘ä»¬æ— æ³•æ˜Žç¡®è¡¨è¾¾ D - Bæ˜¯ä»€ä¹ˆã€‚äØ“äº†æŠŠæ›´å¤šçš„ä¿¡æ¯ä¸æ–的导入到原有系¾lŸä¸åQŒé¢å‘对象内¾|®æä¾›çš„æ–ÒŽ(gu¨©)³•是å¾ç«‹ä¸æ–扩展的¾cÕdž‹æ ?w¨¨i),¾cÕdž‹æ ?w¨¨i)æ¯å¢žé•¿ä¸€å±‚,ž®±å¯ä»¥å¤šå®¹çº³ä¸€äº›æ–°çš„ä¿¡æ¯ã€‚这是一¿U金å—å¡”å¼çš„¾l“æž„åQŒåªä¸è¿‡æ˜¯ä¸€¿U倒立的金å—å¡”åQŒæœ€¾lˆåŸºç‚¹ä¼šè¢«ä¸æ–增长的¾l“构压力所压垮ã€?br />
3. ¾l„äšg技æœ?Component)本质上是在æå€¡é¢å‘接å?interface)åQŒç„¶åŽé€šè¿‡æŽ¥å£ä¹‹é—´çš„组å?Composition)è€Œä¸æ˜¯å¯¹è±¡ä¹‹é—´çš„¾l§æ‰¿(inheritance)æ¥æž„é€ ç³»¾lŸã€‚基于组åˆçš„è§‚å¿µç›¸å½“äºŽæ˜¯å®šä¹‰äº†è¿½Ž—å…³¾p»ï¼šD = B + C。终于,我们勉强å¯ä»¥åœ¨æ¦‚念层é¢ä¸ŠåšåŠ æ³•äº†ã€?br />
¾l„äšgå…è®¸æˆ‘ä»¬éšæ„的组åˆï¼ŒæŒ‰ç…§ç”Þq®€å•åˆ°å¤æ‚çš„æ–¹å‘æž„é€ ç³»¾lŸï¼Œä½†æ˜¯¾l„äšgæž„æˆçš„æˆå“之间ä»ç„¶æ— 法自ç”Þqš„建立关系。这æ„味瀾l„äšg¾l„装得到的æˆå“åªæ˜¯æŸ¿Uå¤ç«‹çš„åQŒå¶ç„¶çš„产物ã€?br />
F = A + B + C ? G = A + D + C�br />
4. 在数å¦ä¸ŠåQŒé…å¤‡äº†åŠ æ³•˜qç®—çš„é›†åˆæž„æˆåоŸ¤ï¼Œå¦‚æžœè¦æˆä¸ºç¾¤(Group)åQŒåˆ™å¿…é¡»å®šä¹‰ç›¸åº”çš„é€†è¿½Ž—ï¼šå‡æ³•ã€?¾Ÿ¤ç»“æž„ä‹É得大¾_’åº¦çš„ç»“æž„å˜æ¢æˆä¸ºå¯èƒ½ã€?br />
F = A + B + C = A + D - D + B + C = (A + D + C) - D + B = G - D + B
在ä¸ç ´å原有代ç 的情况下åQŒå¯¹åŽŸæœ‰¾pÈ»ŸåŠŸèƒ½˜q›è¡Œå¢žåˆ åQŒè¿™ž®±æ˜¯é¢å‘切é¢(AOP)技术的全部价倹{€?br />
]]> 业务架构òq›_°çš„自ä¸ùN—®é¢?/title> http://www.aygfsteel.com/canonical/archive/2011/02/11/344053.htmlcanonical canonical Fri, 11 Feb 2011 06:02:00 GMT http://www.aygfsteel.com/canonical/archive/2011/02/11/344053.html http://www.aygfsteel.com/canonical/comments/344053.html http://www.aygfsteel.com/canonical/archive/2011/02/11/344053.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/344053.html http://www.aygfsteel.com/canonical/services/trackbacks/344053.html
采用业务架构òq›_°æ¥å¼€å‘业务系¾lŸï¼Œå³ä‹É看似开å‘工作釞®ï¼Œæœ€¾lˆäñ”生的å„ç±»é…置代ç é‡ä¹Ÿå¯èƒ½ä¼šå¤§å¤§è¶…˜q‡æ™®é€šæ‰‹å·¥ç¼–½E‹äñ”生的代ç é‡ï¼Œ˜q™æ„味ç€òq›_°ž®è£…äº†ä¸šåŠ¡å†…åœ¨çš„å¤æ‚性,˜q˜æ˜¯æ„味ç€òq›_°å¼•入了ä¸å¿…è¦çš„夿‚性?很多业务架构òq›_°çš„å–炚wƒ½æ˜¯é›¶ä»£ç 的应用开å‘,低水òq³çš„å¼€å‘äh员也å¯ä»¥ä¸Õd¯¼çš„å¼€å‘,但是ä¸ÞZ»€ä¹ˆé«˜æ°´åã^的程åºå‘˜ä¸èƒ½å€ŸåŠ©äºŽè¿™äº›å¼€å‘åã^å°æžå¤§çš„æé«˜ç”Ÿäñ”率?
一般的业务架构òq›_°æ— 法回ç”以下问题åQ?br />
1) 业务¾pÈ»Ÿå¯ä»¥é€šè¿‡ä½¿ç”¨è®¾è®¡å·¥å…·æ¥é‡ç”¨ä¸šåŠ¡æž¶æž„åã^å°å·²¾l实现的功能åQŒä½†æ˜¯ä¸šåŠ¡ç³»¾lŸå†…部大é‡ç›¸ä¼¼çš„æ¨¡åž‹é…置如何æ‰èƒ½å¤Ÿè¢«é‡ç”¨åQ?br />
2) 特定的业务领域ä¸å˜åœ¨ç€å¤§é‡ç‰ÒŽ(gu¨©)®Šçš„业务规则,例如“审批串行˜q›è¡ŒåQŒæ¯ä¸€æ¥éƒ½å…许回退åˆîC¸Šä¸€æ¥ï¼Œè€Œä¸”å…许选择跌™{åˆîC“Qæ„åŽä¸€æ?#8221;。这些规则如何æ‰èƒ½å¤Ÿè¢«å¼•å…¥è®¾è®¡å·¥å…øP¼Œ½Ž€åŒ–é…¾|®è¿‡½E‹ï¼Ÿ
3) å·²ç»å¼€å‘好的业务系¾lŸä½œä¸ÞZñ”哿¥é”€å”®çš„æ—¶å€™ï¼Œå¦‚何应对具体客户的定制化åQŸå¦‚果按照客戯‚¦æ±‚修攚w…¾|®ï¼Œåˆ™ä»¥åŽä¸šåŠ¡ç³»¾lŸè‡ªíw«æ˜¯å¦è¿˜èƒ½å¤Ÿå®žçŽ°ç‰ˆæœ¬å‡çñ”åQ?br />
Witrixòq›_°æä¾›çš„åŸºæœ¬å¼€å‘æ¨¡åž‹äØ“
App = Biz aop-extends Generator<DSL>
在这一图景下,我们ž®±å¯ä»¥å›ž½{”以上三个问题:
1) 业务模型通过领域特定è¯è¨€(DSL)æ¥è¡¨è¾¾ï¼Œå› æ¤å¯ä»¥ä½¿ç”¨è¯è¨€ä¸é€šç”¨çš„ç‘ô承或者组件抽象机制æ¥å®žçŽ°æ¨¡åž‹é‡ç”¨ã€?br />
2) æŽ¨ç†æœºå¯¹äºŽæ‰€æœ‰æŽ¨ç†è§„则一视åŒä»ï¼Œç‰ÒŽ(gu¨©)®Šçš„ä¸šåŠ¡è§„åˆ™ä¸Žé€šç”¨çš„ä¸šåŠ¡è§„åˆ™ä¸€æ ·éƒ½å¯ä»¥å‚与推熘q‡ç¨‹åQŒåƈ且一般情况下ç‰ÒŽ(gu¨©)®Šçš„业务规则更能够大幅½Ž€åŒ–ç³»¾lŸå®žçŽ°ç»“æž„ã€?br />
3) 相对于原始模型的修改被独立出æ¥ï¼Œç„¶åŽåº”用é¢å‘切é¢(AOP)技术将˜q™äº›ç‰¹å®šä»£ç ¾l‡å…¥åˆ°åŽŸå§‹æ¨¡åž‹ä¸ã€‚åŽŸå§‹æ¨¡åž‹ä¸Žå·®å¼‚ä¿®æ”¹ç›æ€º’分离åQŒå› æ¤åŽŸå§‹æ¨¡åž‹å¯ä»¥é𿗶凾U§ã€?br />
Witrixòq›_°æ‰€å¼ø™°ƒçš„䏿˜¯å¼ºå¤§çš„功能åQŒè€Œæ˜¯ä¸€åˆ‡è¡¨è±¡ä¹‹åŽçš„æ•°å¦è§„律。Witrixòq›_°é€šè¿‡ž®‘数基本原ç†çš„åå¤åº”ç”¨æ¥æž„é€ èÊYä»¶ç³»¾lŸï¼Œå®ƒæœ¬íw«å°±æ˜¯é‡‡ç”¨åã^å°æŠ€æœ¯æž„é€ çš„äº§ç‰©ã€‚æˆ‘ä»¬ç”¨å¤æ‚åº¦äØ“Açš„å·¥å…·åˆ¶é€ å¤æ‚度为A+çš„äñ”å“,然厘q›ä¸€æ¥ä»¥˜q™ä¸ªå¤æ‚åº¦äØ“A+çš„äñ”å“äØ“å·¥å…·æ¥æž„é€ å¤æ‚度为A++çš„äñ”å“ã€?br />
]]> 模型驱动的数å¦åŽŸç?/title> http://www.aygfsteel.com/canonical/archive/2011/02/07/343919.htmlcanonical canonical Sun, 06 Feb 2011 18:56:00 GMT http://www.aygfsteel.com/canonical/archive/2011/02/07/343919.html http://www.aygfsteel.com/canonical/comments/343919.html http://www.aygfsteel.com/canonical/archive/2011/02/07/343919.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/343919.html http://www.aygfsteel.com/canonical/services/trackbacks/343919.html
一¿UæŠ€æœ¯æ€æƒ³å¦‚æžœ¼‹®å®žèƒ½å¤Ÿ½Ž€åŒ–ç¼–½E‹ï¼Œæœ‰æ•ˆé™ä½Ž¾pÈ»Ÿæž„é€ çš„å¤æ‚性,那么它必然具有柿U内在的数å¦è§£é‡Šã€‚åä¹‹ï¼Œæ— è®ºä¸€¿U技术机制显得如何åŽä¸½é«˜æ·±ï¼Œå¦‚果它没æœ?
清晰的数å¦å›¾è±¡ï¼Œé‚£ä¹ˆž®±å¾ˆéš¾è¯æ˜Žè‡ªíw«å˜åœ¨çš„价倹{€‚对于模型驱动架æž?MDA)åQŒæˆ‘长期以æ¥ä¸€ç›´éƒ½æŒæœ‰ä¸€¿U批判æ€åº¦ã€‚(Physical Model
Driven http://canonical.javaeye.com/blog/29412
åQ‰ã€‚åŽŸå› å°±åœ¨äºŽ“由工兯‚‡ªåŠ¨å®žçŽîC»Žòq›_°æ— 关模型(PIM)å‘åã^å°ç›¸å…Ïx¨¡åž?PSM)çš„è{æ?#8221;˜q™ä¸€å›¾æ™¯ä¼ég¹Žåªæ˜¯æƒÏxŠŠ¾pÈ»Ÿä»Žå®žçŽ°çš„æ³¥æ²¼ä¸æ‹¯æ•‘出æ¥ï¼Œé®è”½ç‰¹å®šè¯?
a€åQŒç‰¹å®šåã^åîC¸çš„å¶ç„¶çš„é™åˆ¶æ¡äšgåQŒåƈ没有触åŠåˆ°ç³»¾lŸå¤æ‚æ€§è¿™ä¸€æ ¸å¿ƒé—®é¢˜ã€‚è€Œæ‰€è°“çš„å¯è§†åŒ–徿¨¡å……å…‰™‡ä¸è¿‡æ˜¯è¯´æ˜Žäh¾c»è¶…强的视觉模å¼è¯†åˆ«èƒ½åŠ›ä½¿å¾—æˆ‘ä»¬å¯ä»¥˜q…é€?
识别¾pÈ»Ÿå…¨æ™¯å›¾ä¸éšå«çš„æ•´ä½“结构,更快的实现对¾pÈ»Ÿ¾l“构的ç†è§£ï¼Œòq¶æ²¡æœ‰è¯æ˜Žç³»¾lŸå¤æ‚性有ä»ÖM½•本质性的é™ä½Žã€‚丘q‡å¦‚果我们æ¢ä¸€ä¸ªè§†è§?
ä¸æŠŠæ¨¡åž‹å±€é™äØ“æŸç§å¯è§†åŒ–çš„¾l“æž„å›?è€Œå°†å®ƒå®šä¹‰äØ“æŸç§é«˜åº¦‹¹“羃的领域æ˜q?
则模型驱动基本上½{‰äh(hu¨¢n)äºŽæ ¹æ®é¢†åŸŸæ˜q°è‡ªåŠ¨æŽ¨å¯¼å¾—åˆ°æœ€¾lˆçš„应用½E‹åºã€‚沿瀘q™ä¸€æ€èµ\åQŒW(xu¨¦)itrixòq›_°ä¸çš„很多设计实际上å¯ä»¥è¢«è§£é‡Šä¸ºæ¨¡åž‹å®šä¹‰ï¼Œæ¨¡åž‹æŽ¨å¯¼ä»¥åŠ
模型嵌入½{‰æ–¹é¢çš„æŽ¢çƒ¦ã€‚这些具体技术的背åŽéœ€è¦çš„æ˜¯æ¯”一般MDAæ€æƒ³æ›´åŠ ¾_¾è‡´çš„设计原ç†ä½œä¸ºæ”¯æ’‘。我们å¯ä»¥è¿›è¡Œå¦‚下抽象分æžã€‚(Witrixæž¶æž„åˆ†æž http://canonical.javaeye.com/blog/126467
åQ?br />
1. é—®é¢˜å¤æ‚åQŸçº¿æ€§åˆ‡åˆ†æ˜¯å‰Šå‡é—®é¢˜è§„模åQˆä»Žè€Œé™ä½Žé—®é¢˜å¤æ‚性)的通用手段åQŒä¾‹å¦‚模å?Module)。(软äšgä¸çš„分æžå?http://canonical.javaeye.com/blog/33885
åQ?/p>
App = M1 + M2 + M3 +
2. 分嗘q‡å¤šåQŸåŒæ€æ˜ ž®„是¾pÈ»Ÿ¾U¦åŒ–的一般化½{–ç•¥åQŒä¾‹å¦‚多æ€ï¼ˆpolymorphismåQ‰ã€‚ï¼ˆåŒæž„ä¸ŽåŒæ€ï¼šè®¤è¯†åŒä¸€æ€?http://canonical.javaeye.com/admin/blogs/340704
åQ?/p>
(abc,abb,ade, ) -> [a], (bbb, bcd,bab, ) -> [b]
3. é€’å½’ä½¿ç”¨ä»¥ä¸Šä¸¤ç§æ–ÒŽ(gu¨©)³•åQŒå°†åˆ†åˆ†åˆåˆçš„æ¸¸æˆè¿›è¡Œåˆ°åº•ï¼ŒæŽ¨å‘æžè‡´ã€?br />
4. 以少控多的终æžåÅžæ€ï¼Ÿå¦‚æžœå˜åœ¨åQŒåˆ™æž„æˆè¾“入与输å‡ÞZ¹‹é—´çš„éžçº¿æ€§å˜æ¢ï¼ˆè¾“å…¥ä¸å±€éƒ¨å¾®ž®å˜åŒ–将坯D‡´è¾“出ä¸å¤§èŒƒå›´æ˜Žæ˜¾çš„å˜åŒ–)ã€?/p>
App = F(M)
5.
å˜æ¢å‡½æ•°Få¯ä»¥è¢«è¯ é‡ŠäØ“è§£é‡Šå™?Interpreter)或者翻译机åQŒä¾‹å¦‚工作æµå¼•擎ž®†å·¥ä½œæµæè¿°ä¿¡æ¯¾˜»è¯‘ä¸ÞZ¸€æ¥æ¥çš„具体æ“作,工作‹¹æ˜q°å¯ä»¥çœ‹ä½œæ˜¯ç”±åº•
层引擎支撑的åQŒåœ¨æ›´é«˜çš„æŠ½è±¡å±‚é¢ä¸Š˜q行的领域模型。但是在˜q™ç§è§‚ç‚¹ä¸‹ï¼Œå˜æ¢å‡½æ•°Fä¼ég¹Žæ˜¯é’ˆå¯ÒŽ(gu¨©)Ÿ¿Uç‰¹å®šæ¨¡åž‹æž„é€ çš„åQŒå¼•擎内部信æ¯ä¼ 导的途径是确定的åQŒå…³æ³¨çš„
é‡ç‚¹å§‹ç»ˆåœ¨æ¨¡åž‹ä¸ŠåQŒé‚£ä¹ˆè§£é‡Šå™¨è‡ªèínåº”è¯¥å¦‚ä½•è¢«æž„é€ å‡ºæ¥å‘¢åQ?/p>
App ~ M
6.
å¦å¤–一¿Uæ›´åŠ å¼€æ”„¡š„è§‚ç‚¹æ˜¯å°†å˜æ¢å‡½æ•°F看作是生æˆå™¨(Generator)æˆ–è€…æŽ¨ç†æœºã€‚Fž®†æ ¹æ®è¾“入的信æ¯åQŒç»“åˆå…¶ä»–知识,推ç†ç”Ÿæˆä¸€¾pÕdˆ—新的命题和æ–
a€ã€‚æ¨¡åž‹çš„åŠ›é‡æºäºŽæŽ¨å¯¼ã€‚å˜æ¢å‡½æ•°F本èín在系¾lŸæž„é€ è¿‡½E‹ä¸å¤„äºŽæ ¸å¿ƒåœîC½åQŒM仅仅是触å‘其推熘q‡ç¨‹çš„ä¿¡æ¯æºè€Œå·²ã€‚Fž®†æ¦¨òq²M的最åŽä¸€ç‚¹å‰©ä½™äh(hu¨¢n)å€û|¼Œæ‰€æœ‰æ ¹æ®M
能够¼‹®å®šçš„事实将被自动实玎ͼŒè€Œå¤§é‡å•é M自èínçš„ä¿¡æ¯æ— 法判定的命题也å¯ä»¥ç»“åˆF内在的知识作出判æ–。生æˆå™¨è‡ªèínçš„æž„é€ è¿‡½E‹éžå¸¸ç®€å?-åªè¦ä¸æ–呿ލç†ç³»
¾lŸä¸å¢žåŠ æ–°çš„æŽ¨ç†è§„则å›_¯ã€‚è¯a€å†…ç½®çš„æ¨¡æ¿æœºåˆ?template)åŠå…ƒ¾~–程技æœ?meta
programming)åQŒæˆ–者跨‘Šè¯a€è¾¹ç•Œçš„代ç 生æˆå·¥å…·éƒ½å¯ä»¥çœ‹ä½œæ˜¯ç”Ÿæˆå™¨çš„具体实例。(关于代ç 生æˆå’ŒDSL http://canonical.javaeye.com/blog/275015
)
App = G < M >
7. 生æˆå™¨G之所以å¯ä»¥è¢«ç‹¬ç«‹å®žçްåQŒæ˜¯å› äØ“æˆ‘ä»¬å¯ä»¥å®žçŽ°ç›¸å¯¹çŸ¥è¯†ä¸Žç»å¯¹çŸ¥è¯†çš„分离, ˜q™ä¹Ÿæ£æ˜¯é¢å‘对象技术的本质所在。(é¢å‘对象之åÅžå¼ç³»¾l?http://canonical.javaeye.com/blog/37064
åQ?/p>
G < M > ==> G = {m => m.x(a,b,c);m.y(); }
8.
现实世界的ä¸å®Œç¾ŽåQŒå°±åœ¨äºŽçŽ°å®žå†³ä¸æŒ‰ç…§æˆ‘ä»¬ä¸ºå…¶æŒ‡å®šçš„ç†æƒŒ™µ\¾U¿å‰˜q›ã€‚å…·ä½“åœºæ™¯ä¸æ€ÀL˜¯å˜åœ¨ç€å¤§é‡æˆ‘ä»¬æ— æ³•é¢„çŸ¥çš?#8220;噪声”åQŒå®ƒä»¬ä‹Éå¾—ä“Q何在“˜q‡åŽ»”¼‹®ç«‹çš„æ–¹½E?
éƒ½æ— æ³•åœ¨“æœªæ¥”ä¿æŒæŒä¹…çš„åã^è¡¡ã€‚ä¼ ¾lŸæ¨¡åž‹é©±åŠ¨æž¶æž„çš„å›°å¢ƒ?y¨u)®±åœ¨äºŽæ¤ã€‚我们å¯ä»¥é€‰æ‹©ž®†æ¨¡åž‹M和生æˆå™¨G䏿–夿‚化,容纳‘Šæ¥‘Šå¤šçš„å¶ç„¶æ€§ï¼Œç›´è‡³å¤±åŽ»å¯ÒŽ(gu¨©)¨¡åž‹æ•´
体结构的控制力。å¦å¤–一¿Ué€‰æ‹©æ˜¯æ¨¡åž‹åœ¨ä¸æ–膨胀åQŒä¸æ–æé«˜è¦†ç›–能力的˜q‡ç¨‹ä¸ï¼Œä¸æ–的空‹zžåŒ–åQŒäñ”生大é‡å¯æ’å…¥(plugin)的接入点åQŒæœ€¾lˆä“á失模型的推ç†
能力åQŒé€€åŒ–æˆä¸ÞZ¸€¿Uç¼–ç 规范。Witrixòq›_°ä¸é‡‡ç”¨çš„æ˜¯ç¬¬ä¸‰ç§é€‰æ‹©åQšæ¨¡åž‹åµŒå…?-模型ä¸çš„多余信æ¯è¢«ä¸æ–清‹z—掉åQŒæ¨¡åž‹é€šè¿‡¾_„¡‚¼åŒ–楽H出自èínå˜åœ¨çš„åˆç?
性,æˆäؓ更广泛的˜q行环境ä¸çš„æ”¯æ’‘骨架。(¾l“构的自‘Ïx€?http://canonical.javaeye.com/blog/482620
åQ?/p>
App != G0 < M0 > åQ?nbsp;App != G0 < M1 > åQ?nbsp;App = G1 < M1 >
9.
现在的问题是åQšå¦‚何基于一个已¾l被完美解决的é‡å¤§é—®é¢˜ï¼Œæ¥æ›´æœ‰æ•ˆçŽ‡çš„æžå®šä¸æ–出现但åˆä¸æ˜¯é‡å¤å‡ºçŽ°çš„å°é—®é¢˜ã€‚现在我们所需è¦çš„䏿˜¯æ²¿ç€æŸä¸ª¾l´åº¦˜q›è¡Œå‡åŒ€çš?
切分åQŒè€Œå¿…™åÀL˜¯æŸç§æœ‰æ•ˆçš„陾l´æ‰‹ŒDüc€‚如果我们å¯ä»¥å®šä¹‰ä¸€¿U投å½Þq®—åP,
ž®†å¾…解决的问题投ž®„到已ç»è¢«è§£å†³çš„问题域ä¸åQŒåˆ™å‰©ä¸‹çš„补集往往å¯ä»¥è¢«ç®€åŒ–。(ä¸ÖM»Žåˆ†è§£è€Œä¸æ˜¯æ£äº¤åˆ†è§?http://canonical.javaeye.com/blog/196826
åQ?/p>
dA = App - P[App] = App - G0 < M0 >
10. è¦å®žçŽîC»¥ä¸Šå¾®æ‰°åˆ†æžç–ç•¥ï¼Œå‰ææ¡äšg是å¯ä»¥å®šä¹‰é€†å…ƒåQŒåƈ且需è¦å®šä¹‰ä¸€¿Uç²¾¾l†çš„¾_˜ç»“æ“作åQŒå¯ä»¥å°†åˆ†æ•£çš„æ‰°åЍ釿žäØ“¾_„¡¡®çš„应用到基础¾pÈ»Ÿçš„å„处。Witrixòq›_°çš„具体实现类ä¼égºŽæŸç§AOPåQˆé¢å‘切é¢ç¼–½E‹ï¼‰æŠ€æœ¯ã€‚(逆元åQšä¸å˜åœ¨çš„真实å˜åœ?http://canonical.javaeye.com/blog/325051
åQ?/p>
App = A + D + B = (A + B + C) - C + D = App0 + ( - C + D) = G0 < M0 > + dA
11. 模型驱动òq¶ä¸æ„味ç€ä¸€ä¸ªåº”用åªèƒ½ç”±å”¯ä¸€çš„一个模型æ¥é©±åЍåQŒä½†æ˜¯å¦‚果引入多个ä¸åŒåÅžå¼çš„æ¨¡åž‹åQŒåˆ™å¿…é¡»ä¸ºå¦‚ä¸‹æŽ¨ç†æä¾›å…·ä½“çš„æŠ€æœ¯èµ\径:
A. ž®†å¤šä¸ªæ¨¡åž‹å˜æ¢åˆ°å…±åŒçš„æ˜q°åŸŸ
B. å®žçŽ°å¤šä¸ªæ¨¡åž‹çš„åŠ å’?
C. å¤„ç†æ¨¡åž‹ä¹‹é—´çš„冲½HåÆˆå¡«è¡¥æ¨¡åž‹ä¹‹é—´çš„ç©ºç™?br />
在Witrixòq›_°ä¸æ¨¡åž‹åµŒå…?¾l„åˆä¸»è¦ä¾èµ–于文本化åŠç¼–译期˜q行½{‰æœºåˆ¶ã€‚(文本åŒ?http://canonical.javaeye.com/blog/309395
åQ?/p>
App = Ga < Ma > + Gb < Mb > + dA
12.
¾pÈ»Ÿçš„开呿—¶åˆ»t0和实施时刻t1ä¸€èˆ¬æ˜¯æ˜Žç¡®åˆ†ç¦»çš„ï¼Œå› æ¤å¦‚果我们è¦å¾ç«‹ä¸€ä¸ªåŒ…å«å¼€å‘与实施时刻信æ¯çš„æ¨¡åž‹ï¼Œåˆ™è¿™ä¸€æ¨¡åž‹å¿…é¡»æ˜¯å«æ—¶çš„åQŒå¤šé˜¶æ®µçš„。关于时
é—ß_¼Œæˆ‘们所知é“的最é‡è¦çš„事实之一æ˜?#8220;æœªæ¥æ˜¯ä¸å¯é¢„知的”。在t0æ—¶åˆ»å»ºç«‹çš„æ¨¡åž‹å¦‚æžœè¦æ¶ëŠ›–t1时刻的所有å˜åŒ–,则必™åÕdšå‡ºå¤§é‡çŒœ‹¹‹ï¼Œè€Œä¸”t1时刻è·ç¦»
t0时刻‘Šè¿œåQŒçŒœ‹¹‹çš„é‡è¶Šå¤§ï¼Œ“猜测有效”˜q™ä¸€é›†åˆçš„æµ‹åº¦è¶Šž®ï¼Œç›´è‡³ä¸?。åšg˜qŸé€‰æ‹©æ˜¯å®žçް嫿—¶ç³»¾lŸæŽ§åˆ¶çš„ä¸äºŒæ³•é—¨ã€?br />
在Witrixòq›_°ä¸ï¼Œæ‰€æœ‰åŠŸèƒ½ç‰¹æ€§çš„å®žçŽ°éƒ½åŒ…å«æŸ¿Uå…ƒæ•°æ®æè¿°æˆ–è€…å®šåˆ¶æ¨¡æ¿ï¼Œå› 椾l“åˆé…置机制以åŠåЍæ€ç¼–译技术既å¯å®žçŽ°å¤šé˜¶æ®µæ¨¡åž‹ã€‚ä¾‹å¦‚å¯¹äºŽä¸€ä¸ªåœ¨æœªæ¥
æ‰èƒ½¼‹®å®šçš„叏釿•°¾l„,我们å¯ä»¥å®šä¹‰ä¸€ä¸ªExcelæ–‡äšgæ¥å…许实施äh员录入具体的å€û|¼Œç„¶åŽé€šè¿‡åЍæ€ç¼–译技术在¾~–译期解æžExcelæ–‡äšgåQŒåƈ完æˆä¸€¾pÕdˆ—数值æ˜
ž®„è¿½Ž—ï¼Œæœ€¾lˆå°†å…¶è{åŒ–äØ“¾~–译期å˜åœ¨çš„一个常é‡ã€‚这一˜q‡ç¨‹ä¸ä¼šå¼•å…¥ä»ÖM½•é¢å¤–çš„è¿è¡Œæˆæœ¬ï¼Œä¹Ÿä¸è¦æ±‚ä»ÖM½•ç‰¹å®šçš„ç¼“å˜æœºåˆÓž¼Œæœ€¾lˆçš„˜q行¾l“构与在未æ¥å½“所有信æ¯éƒ½åœ?
ä½ä¹‹åŽå†æ‰‹å†™ä»£ç 没有ä»ÖM½•区别。(Dè¯è¨€ä¸Žtpl之编译期动作 http://canonical.javaeye.com/blog/57244
åQ?/p>
App(t1) = G(t0,t1) < M(t0,t1) > + dA(t0,t1)
13. ¾U§åˆ—ç†è®ºæä¾›äº†ä¸€ä¸ªæ¼”化框æžÓž¼Œå®ƒæŒ‡å‡ºå¤ç«‹çš„æ¨¡åž‹å¿…须被放在模型çñ”列ä¸è¢«å®šä¹‰ï¼Œè¢«è§£é‡Šã€‚(关于¾U§åˆ—设计ç†è®º http://canonical.javaeye.com/blog/33824
åQ?/p>
M[n] = G < M[n - 1 ] > + dMn
14.
推ç†çš„链æ¡ä¼šå› 䨓ä»ÖM½•局部åä¾‹çš„å‡ºçŽ°è€Œä¸æ–。在ä»ÀL„时空点上åQŒæˆ‘们能够æ–a€çš„事实有哪些åQŸä¿¡æ¯è¶Šž®‘,我们能够¼‹®å®šçš„事实越ž®‘,能够åšå‡ºçš„æŽ¨è®ÞZ¹Ÿž®Þp¶Šž®‘。现
在æµè¡Œçš„å¾ˆå¤šè®¾è®¡å®žè´¨ä¸Šæ˜¯åœ¨ç ´åç³»¾lŸçš„å¯¹ç§°æ€§ï¼Œç ´å¾pÈ»Ÿå¤§èŒƒå›´çš„¾l“构。比如明明ORM容器已ç»å®žçŽ°æ‰€æœ‰æ•°æ®å¯¹è±¡çš„¾lŸä¸€½Ž¡ç†åQŒéžè¦å°†å…¶æ‹†åˆ†äØ“æ¯ä¸ªä¸šåŠ¡è¡¨ä¸€ä¸?
çš„DAO接å£ã€‚很多对ç‰|´»æ€§çš„˜q½æ±‚å®Œå…¨æ²¡æœ‰æžæ¸…æ¥šä¿¡æ¯æ˜¯å¯¹ä¸¼‹®å®šæ€§çš„æ¶ˆé™¤åQŒè€Œä¸¼‹®å®šæ€§çš„å‡å°‘æ„味ç€é™åˆ¶çš„å¢žåŠ ï¼Œ¾U¦æŸçš„å¢žåŠ ã€‚ï¼ˆFrom Local To
Global http://canonical.javaeye.com/blog/42874
åQ?br />
¾l„äšg/æž„äšg技术的宣言是生产峾l„装åQŒä½†æ˜¯ç»„è£…æœ‰æˆæœ¬åQŒæœ‰åŽé—症(例如需è¦é¢å¤–的胶水或者螺钉)。èÊY件的本质òq¶ä¸æ˜¯ç‰©è´¨ï¼Œè€Œæ˜¯ä¿¡æ¯åQŒè€Œä¿¡æ¯çš„æœ¬è´¨æ˜¯æŠ½è±¡çš„è§?
å¾‹ã€‚åœ¨æŠ½è±¡ä¸–ç•Œä¸æœ€æœ‰æ•ˆçš„ç”Ÿäº§æ–¹å¼æ˜¯æŠ½è±¡çš„è¿½Ž—ï¼Œ˜qç®—å³ç”Ÿäº§ã€‚组件å¼å¼€å‘æ„å‘³ç€æœä»ŽçŽ°æœ‰è§„å¾‹åQŒç†Ÿ¾lƒåº”ç”¨ï¼Œè€ŒåŽŸç†æ€§ç”Ÿäº§åˆ™æ„味ç€ä¸æ–åˆ›é€ æ–°çš„è§„å¾‹ã€‚åŠŸèƒ½æ¨¡
å—越多,¾l´æŠ¤çš„æˆæœ¬è¶Šé«˜ï¼Œæ˜¯è´Ÿæ‹…ï¼Œè€ŒæŽ¨ç†æœºåˆ¶è¶Šå¤šï¼Œç”Ÿäñ”çš„æˆæœ¬è¶Šä½Žï¼Œæ˜¯èƒ¦å¯Œã€‚åªæœ‰æ¢å¤èÊY件的抽象性,明确把æ¡è½¯äšgæž„é€ è¿‡½E‹å†…在的数å¦åŽŸç†åQŒæ‰èƒ½çœŸæ£é‡Šæ”¾èÊY
ä»¶ç ”å‘的生äñ”力。(从编写代ç 到刉™€ 代ç ?http://canonical.javaeye.com/blog/333167
åQ?br />
注解1åQšå¾ˆå¤šè®¾è®¡åŽŸåˆ™å…¶å®žæ˜¯åœ¨å¼ºè°ƒèÊYä»¶ç”±äººæž„é€ ç”±äººç†è§£ï¼Œè½¯äšg开呿œ¬è´¨ä¸Šæ˜¯äh¾cÕd·¥½E‹å¦åQŒéœ€è¦å…³æ³¨äh¾cÈš„ç†è§£åŠ›ä¸Žå作能力。例如共åŒçš„建模è¯è¨€å‡å°‘äº¤äº’æˆæœ¬åQŒåŸºäºŽæ¨¡åž‹å‡ž®‘设计与实现的分¼›»ï¼Œæ˜“è¯»çš„ä»£ç æ¯”é«˜æ€§èƒ½çš„ä»£ç æ›´é‡è¦åQŒåšä¸€ä»¶äº‹åªæœ‰å”¯ä¸€çš„一¿Uæ–¹å¼ç‰ã€?br />
注解2åQšç”Ÿæˆç³»¾lŸçš„æ¼”绎˜qœæ¯”我们惌™±¡çš„è¦æ·±åˆ»ä¸Žå¤æ‚得多。例如生命的æˆé•¿å¯ä»¥è¢«çœ‹ä½œæ˜¯åœ¨å¤–界åé¦ˆä¸‹ä¸æ–调整的生æˆè¿‡½E‹ã€?br />
注解3åQšé¢†åŸŸæ˜q°æ˜¯æ›´ç´§è‡´ä½†å´æœªå¿…是更本质的表达。äh¾cÈš„DNA如果表达为ATGCåºåˆ—完全å¯ä»¥æ‹¯‚´åˆ°U盘ä¸å¸¦èµ°åQŒåªè¦å¯¹DNAåšå°‘é‡å¢žåˆ ,ž®±å¯ä»¥å®žçްè€?
é¼ åˆ°äººç±»çš„å˜æ¢ï¼ˆäººç±»å’Œè€é¼ 都有大约30000æ¡åŸºå› ,其举U¦æœ‰80%çš„åŸºå› æ˜¯“完全一æ ïL(f¨¥ng)š„”åQŒå¤§¾U¦å…±äº«æœ‰99%çš„ç±»ä¼¼åŸºå› ï¼‰åQŒä½†æ˜¯å¾ˆéš¾è®¤ä¸ÞZh¾cÀL‰€æœ‰æ™ºæ…?
的本质都体现在DNAä¸ï¼ŒDNA看è“væ¥æ›´åƒæ˜¯æŸç§åºåˆ—化ä¿å˜åÅžå¼è€Œå·²ã€?br />
注解4åQšæ¨¡åž‹è{æ¢è¿™ä¸€ææ³•ä¼ég¹Žæ˜¯åœ¨å¼ø™°ƒæ¨¡åž‹ä¹‹é—´çš„åŒæž„对应,转æ¢ä¼ég¹Žæ€ÀL˜¯å¯ä»¥åŒå‘˜q›è¡Œçš„,仅仅是实现难度é™åˆ¶äº†åå‘转æ¢è€Œå·²ã€‚ä½†æ˜¯å¤§é‡æœ‰ç”¨çš„æ¨¡åž‹å˜æ¢å´æ˜¯å•å‘çš„ï¼Œå˜æ¢˜q‡ç¨‹è¦æ±‚䏿–补充新的信æ¯ã€?br />
注解5åQšæ¨¡åž‹é©±åŠ¨åœ¨å¾ˆå¤šäººçœ‹æ¥å°±æ˜¯æ•°æ®åº“模型或者对象模型驱动系¾lŸç•Œé¢è¿è¡Œï¼Œä½†å®žé™…上模型å¯ä»¥æ„指ä»ÀL„抽象知识。虽然在目å‰ä¸šå†…òq¿æ³›‹¹è¡Œçš„对象范å¼ä¸‹åQŒæ‰€
有知识都å¯ä»¥è¡¨è¾¾ä¸ºå¯¹è±¡ä¹‹é—´çš„å…Œ™”åQŒä½†æ˜¯å¯¹è±¡å…³¾p»ï¼ˆåè¯ä¹‹é—´çš„å…³è”å…³¾p»ï¼‰å¯¹è¿½Ž—结构的æç¤ºæ˜¯è¿œ˜qœä¸å¤Ÿå……分的。很多时候所谓的领域模型仅仅是表明概念之间具
有相å…Ïx€§ï¼Œä½†æ˜¯å¦‚æžœä¸è¡¥å……一大段文å—说明åQŒæˆ‘们对于系¾lŸå¦‚何è¿ä½œä»ç„¶ä¸€çŸ¥åŠè§£ã€‚æ•°å¦åˆ†æžå…¶å®žæ˜¯ž®†é¢†åŸŸå†…在的æ„义抽空åQŒä»…余下通用的åÅžå¼åŒ–½W¦å·ã€?br />
]]> ¾l“构的稳定æ€?/title> http://www.aygfsteel.com/canonical/archive/2009/12/06/304906.htmlcanonical canonical Sun, 06 Dec 2009 04:23:00 GMT http://www.aygfsteel.com/canonical/archive/2009/12/06/304906.html http://www.aygfsteel.com/canonical/comments/304906.html http://www.aygfsteel.com/canonical/archive/2009/12/06/304906.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/304906.html http://www.aygfsteel.com/canonical/services/trackbacks/304906.html
F(x0 + dx) = F(x0) + F ' (x0)*dx + 0.5*F '' (x0)*dx^2 +
扰动dxå¯èƒ½åœ¨ç³»¾lŸFä¸å¼•å‘éžå¸¸å¤æ‚的作用˜q‡ç¨‹åQŒåœ¨¾pÈ»Ÿå„处产生一个个局部å˜åŒ–结果。表é¢ä¸Šçœ‹è“væ¥ï¼Œä¼ég¹Ž˜q™äº›å˜åŒ–¾l“æžœå˜åœ¨ç€æ— 穷多ç§å¯èƒ½çš„分¾l„æ–¹å¼ï¼Œä¾‹å¦‚ (F'(x0)-2)*dx + 2*dx^2, 但是åŸÞZºŽå¾®åˆ†åˆ†æžåQŒæˆ‘们å´å¾ˆå®¹æ˜“了解到Taylor¾U§æ•°çš„æ¯ä¸€¾U§éƒ½å¯¹åº”ç€ç‹¬ç«‹çš„物ç†è§£é‡Šï¼Œå®ƒä»¬æž„æˆè‡ªç„¶çš„分¾l„æ ‡å‡†ã€‚æŸä¸€é‡çñ”下的所有å˜åŒ–汇æ€Õd½’òq¶åˆ°ä¸€èµøP¼Œòq¶å¯¹åº”一个明¼‹®çš„æ•´ä½“æè¿°ã€‚在抽象的数ç†ç©ºé—´ä¸åQŒæˆ‘们具有一¿Uæ— æ‰€ä¸è¾¾çš„å˜åŒ–æœé›†èƒ½åŠ›ã€‚å˜åŒ–项å¯ä»¥ä»ŽåŸº¼‹€¾l“æž„ä¸åˆ†¼›Õd‡ºæ¥ï¼Œ¾l过汇æ€ÕdŽå¯ä»¥å¯¹å…¶˜q›è¡Œç‹¬ç«‹çš„ç ”½I¶ã€‚å˜åŒ–本íw«åƈä¸ä¼šç›´æŽ¥å¯ÆD‡´åŸºç¡€¾l“构的崩溃ã€?br />
在èÊY件徿¨¡é¢†åŸŸï¼Œæ¨¡åž‹çš„稳定性é¢ä¸´çš„å´æ˜¯å¦ä¸€ç•ªåœºæ™¯ã€‚一个èÊY件模型一旦被实现之åŽåQŒç§¿Uå±€éƒ¨éœ€æ±‚å˜æ›´å°±éƒ½ä¼šå½¢æˆå¯¹åŽŸæœ‰åŸº¼‹€¾l“构的冲凅R€‚一些局部的需求å˜åŒ–å¯èƒ½é€ æˆå¤§ç‰‡åŽŸæœ‰å®žçŽ°å¤±æ•ˆåQŒæˆ‘ä»¬å°†è¢«è¿«ä¸ºç±»ä¼¼çš„éœ€æ±‚é‡æ–°ç¼–写类似的代ç ã€‚æ¤æ—Óž¼Œè½¯äšgå¼€å‘åÆˆä¸åƒæ˜¯ä¸€¿U纯¾_¹çš„ä¿¡æ¯åˆ›é€ ,而是宛若æŸç§ç‰©è´¨äº§å“的生产(å‚è§ä»Žç¼–写代ç 到刉™€ 代ç ?http://canonical.javaeye.com/blog/333167 åQ‰ã€‚显ç„Óž¼Œæˆ‘们需è¦ä¸€¿U能力,ž®†å±€éƒ¨å˜åŒ–从基础¾l“æž„ä¸å‰¥¼›Õd‡ºæ¥ï¼Œ¾l过汇æ€Õd½’òq¶ä¹‹åŽå†˜q›è¡Œ¾l¼åˆåˆ†æžå’Œå¤„ç†ã€‚è¿™æ£æ˜¯AOP(Aspect Oriented Programming)技术的价值所在ã€?br />
M1 = (G0 + dG0) < M0 + dM0 > ==> M1 = G0 < M0 > + dM
AOP本质上是软äšg¾l“æž„½Iºé—´çš„自ç”׃¿®æ£æœºåˆ¶ã€‚åªæœ‰ç»“åˆAOP技术之åŽï¼Œè½¯äšg模型æ‰èƒ½å¤Ÿé‡æ–°æ¢å¤æŠ½è±¡çš„æœ¬è´¨åQŒåœ¨æ—‰™—´ä¹‹æ²³ä¸é€ƒç¦»éšæœºå˜åŒ–çš„äçR蚀åQŒä¿æŒå®žçް层é¢çš„½E›_®šæ€§ã€‚在˜q™ä¸€èƒŒæ™¯ä¸‹ï¼Œå»ºæ¨¡çš„ç›®çš„å°†ä¸æ˜¯ä¸ÞZº†èƒ½å¤Ÿè·Ÿè¸ªæœ€¾lˆéœ€æ±‚çš„å˜åЍåQŒè€Œæ˜¯è¦åœ¨æŸä¸ªç‹¬ç«‹çš„层é¢ä¸Šèƒ½å¤Ÿè‡ªåœ†å…¶è¯´åQŒèƒ½å¤Ÿå…·æœ‰æŸ¿U独立å˜åœ¨çš„完满性,æˆäØ“æ€ç»´ä¸Šå¯ä»¥æŠŠæ¡çš„æŸä¸ª½E›_®šçš„基ç‚V€‚æ¨¡åž‹çš„çœŸå®žæ€§å°†å› äØ“è‡ªèín¾l“æž„çš„å®Œå¤‡æ€§è€Œå¾—åˆ°è¯æ˜Žï¼Œä¸Žå¤–部世界的契刽E‹åº¦ä¸å†æ˜¯äh(hu¨¢n)值判æ–çš„å”¯ä¸€æ ‡å‡†ã€?a >http://canonical.javaeye.com/blog/482620
]]> ¾l“构的自‘Ïx€?/title> http://www.aygfsteel.com/canonical/archive/2009/10/07/297381.htmlcanonical canonical Wed, 07 Oct 2009 09:10:00 GMT http://www.aygfsteel.com/canonical/archive/2009/10/07/297381.html http://www.aygfsteel.com/canonical/comments/297381.html http://www.aygfsteel.com/canonical/archive/2009/10/07/297381.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/297381.html http://www.aygfsteel.com/canonical/services/trackbacks/297381.html
按照¾l“æž„ä¸ÖM¹‰å“²å¦çš„观点,¾l“æž„å…ähœ‰ä¸‰ä¸ªè¦ç´ åQšæ•´ä½“æ€§ï¼Œå…ähœ‰è½¬æ¢è§„å¾‹æˆ–æ³•åˆ™ï¼ˆè½¬æ¢æ€§ï¼‰åQŒè‡ªíw«è°ƒæ•´æ€§ï¼ˆè‡ªå¾‹æ€§ï¼‰ã€‚整体性æ„味瀾l“æž„ä¸èƒ½è¢«ç®€å•的切分åQŒå…¶æž„æˆè¦ç´ 通过内在的关¾p»è¿½Ž—实现大范围的关è”与转æ¢åQŒæ•´ä½“之所以æˆä¸ºæ•´ä½“æ£æ˜¯ä»¥è½¬æ¢/˜qç®—çš„ç¬¬ä¸€æ€§äØ“ä¿è¯çš„。这¿Uè{æ¢å¯ä»¥æ˜¯å…±æ—¶çš„ï¼ˆåŒæ—¶å˜åœ¨çš„å„å…ƒç´ åQ‰ï¼Œä¹Ÿå¯ä»¥æ˜¯åŽ†æ—¶çš„ï¼ˆåŽ†å²çš„è{æ¢æž„é€ è¿‡½E‹ï¼‰åQŒè¿™æ„味瀾l“æž„æ€»è¦æ±‚ä¸€ä¸ªå†…åœ¨çš„æž„é€ è¿‡½E‹ï¼Œåœ¨ç‹¬ç«‹äºŽå¤–部环境的情况下¾l“æž„å…ähœ‰æŸç§è‡ªç»™è‡ªèƒö的特性,ä¸ä¾èµ–于外部æ¡äšgå›_¯ç‹¬ç«‹çš„å˜åœ¨åÆˆä¿æŒå†…在的活动。自律性æ„味瀾l“构内在的è{æ¢æ€ÀL˜¯¾l´æŒç€æŸç§ž®é—æ€§å’Œå®ˆæ’æ€§ï¼Œ¼‹®ä¿æ–°çš„æˆåˆ†åœ¨æ— é™åœ°æž„æˆè€Œç»“构边界å´ä¿æŒ½E›_®šã€‚注æ„到˜q™é‡Œå¯¹ç»“构的评判òq¶ä¸æ˜¯æ¥è‡ªå¤–在规范和¾U¦æŸåQŒè€Œæ˜¯åŸÞZºŽ¾l“æž„å†…åœ¨çš„è§„å¾‹æ€§ï¼Œæ‰€å¼ø™°ƒçš„䏿˜¯ç»“构对外部æ¡äšg的适应性,而是自èín概念体系的完备性。实际上åQŒä¸€ä¸ªæ— 法直接对应于当å‰å®žé™…环境的结构ä»ç„¶å¯èƒ½å…·æœ‰é‡è¦çš„ä»·å€û|¼Œòq¶åœ¨è§£å†³é—®é¢˜çš„过½E‹ä¸æ‰®æ¼”ä¸å¯æˆ–缺的角艌Ӏ‚在åˆç†æ€§è¿™ä¸ªè§†è§’下åQŒæˆ‘们所å…Ïx³¨çš„ä¸ä»…仅是当å‰çš„现实世界åQŒè€Œæ˜¯æ‰€æœ‰å¯èƒ½çš„世界。一ä¸?#8220;åˆç†”的结构的价值必能在它所适应的世界ä¸å‡¸çŽ°å‡ºæ¥ã€?br />
在信æ¯ç³»¾lŸä¸åQŒæˆ‘们å¯èƒ½ç»å¸æ€¼šé—®è¿™ä¸ªæ¨¡åž‹æ˜¯å¦æ˜¯å¯¹ä¸šåŠ¡çš„å‡†ç¡®æè¿°åQŒæ˜¯å¦å¯ä»¥é€‚åº”éœ€æ±‚çš„å˜æ›´åQŒæ˜¯å¦å…许未æ¥çš„å„ç§æ‰©å±•½{‰ç‰ã€‚但是如果æ¢ä¸€ä¸ªæ€ç»´æ–¹å‘åQŒæˆ‘们会å‘现˜q™äº›é—®é¢˜éƒ½æ˜¯é’ˆå¯¹æœ€¾lˆç¡®ç«‹çš„æ¨¡åž‹è€Œå‘问的åQŒè€Œåœ¨æ¨¡åž‹æž„å¾çš„过½E‹ä¸åQŒé‚£äº›å¯è¢«åˆ©ç”¨çš„å·²å˜åœ¨çš„æˆ–者å¯ä»¥å˜åœ¨çš„æ¨¡åž‹åˆæ˜¯å“ªäº›å‘¢ã€‚æ¯ä¸€ä¸ªä¿¡æ¯æ¨¡åž‹éƒ½å¯¹åº”ç€æŸç§è‡ªåŠ¨æŽ¨ç†æœºï¼Œå¯ä»¥æŽ¥æ”¶ä¿¡æ¯òq¶åšä¸€å®šçš„æŽ¨å¯¼¾l¼åˆå·¥ä½œã€‚一个å¯è¡Œçš„问题是,如何æ‰èƒ½æ›´æœ‰æ•ˆçš„利用已有的信æ¯è¿›è¡ŒæŽ¨å¯û|¼Œå¦‚何消除冗余òq¶å‡ž®‘å„¿Uè{æ¢æˆæœ¬ã€‚我们ç»å¸¸å¯ä»¥è§‚察到åQŒæŸä¸€ä¿¡æ¯¾l„ç»‡æ–¹å¼æ›´å……åˆ†çš„å‘æŽ˜äº†ä¿¡æ¯ä¹‹é—´çš„内在兌™”åQˆä¸€ä¸ªè¡¨è±¡æ˜¯å®ƒå¯¹ä¿¡æ¯çš„ä‹Éç”¨ä¸æ˜¯ç®€å•的局域化的,而是在多处呈çŽîCؓ互相¾U ç¼ çš„æ–¹å¼ï¼Œéš¾ä»¥è¢«åˆ†è§£ï¼‰åQŒè¿™¿U内在关è”èƒö够丰富,以至于我们ä¸ä¾èµ–äºŽå¤–éƒ¨å› ç´ å°±å¯ä»¥ç‹¬ç«‹çš„ç†è§£ã€‚è¿™¿Uçº ¾~ 在一èµïL(f¨¥ng)š„ä¿¡æ¯å—自然会æˆäؓ我们建模的对象ã€?br />
如果模型çš?#8220;覆盖能力”ä¸å†æ˜¯æˆ‘们关注的é‡ç‚¹åQŒé‚£ä¹ˆå¾æ¨¡çš„æ€ç»´å›‘Ö¼ž®†ä¼šå‘生如下的è{åŒ?br />
最¾lˆçš„æ¨¡åž‹å¯ä»¥ç”׃¸€¾pÕdˆ—微模型交¾l‡æž„æˆã€‚æ¨¡åž‹çš„é€’è¿›æž„é€ è¿‡½E‹åƈä¸åŒäºŽç»„ä»?Component)的实物组装接å£ï¼Œä¹Ÿä¸æ˜¯CAD囄¡º¸å †å å¼çš„æž¶æž„概念所能容¾U³çš„。在Witrixòq›_°ä¸ï¼Œæ¨¡åž‹åˆ†è§£å’Œæž„é€ è¡¨è¾¾äØ“å¦‚ä¸‹å½¢å¼ http://canonical.javaeye.com/blog/333167
Biz[n] = Biz[n+1] aop-extends CodeGenerator<DSLx, DSLy>�br />
在èÊYä»¶å‘展的早期åQŒæ‰€æœ‰çš„½E‹åºéƒ½æ˜¯ç‰ÒŽ(gu¨©)®Šæž„é€ çš„åQŒå…¶å¿…ç„¶çš„å‡è®¾æ˜¯ã€åœ¨æ¤æƒ…况下】,é‡ç”¨ä¸åœ¨è€ƒè™‘范围之内åQŒå¼€å‘å¯ä»¥è¯´æ˜¯ä¸€ä¸ªç›²ç›®è¯•错的˜q‡ç¨‹ã€‚éšç€æˆ‘们逿¥¿U¯ç¯äº†ä¸€äº›ç»éªŒï¼Œå¼€å§‹è‡ªè§‰çš„应用ç†è®ºåˆ†æžæ‰‹æ®µåQŒã€åœ¨æ‰€æœ‰æƒ…况下】都æˆç«‹çš„一些普适的原ç†è¢«æ½Cºå‡ºæ¥ï¼Œå®ƒä»¬æˆäؓ我们在广阔的未知世界ä¸è·‹æ¶‰æ—¶çš„å‘对{€‚当我们的èƒö˜qÒŽ(gu¨©)¸æ¸æŽ¥˜q‘领域的边界åQŒå¯¹é¢†åŸŸçš„全貌有一个æ€ÖM½“的认知之åŽï¼Œä¸€¿U对自èínæˆç†Ÿæ€§çš„自信很自然的ž®†æˆ‘们坼呿›´åŠ é¢†åŸŸç‰¹å®šçš„åˆ†æžã€‚很多时候,我们会å‘çŽîC¸€ä¸ªç‰¹åŒ–å‡è®‘֯以大大æé«˜ä¿¡æ¯çš„利用率,推导å‡ÞZ¼—多未被显å¼è®¾å®šçš„知识。我们需è¦é‚£äº›ã€åœ¨æŸäº›æƒ…å†µä¸‹ã€‘æœ‰æ•ˆçš„è§„åˆ™æ¥æž„æˆä¸€ä¸ªå®Œå¤‡çš„æ¨¡åž‹åº“。这ž®±å¦‚åŒæœ‰å¤§é‡å¤‡é€‰çš„æ•°å¦å®šç†åQŒé¢å¯¹ä¸åŒçš„物ç†çŽ°è±¡åQŒæˆ‘们会从一¾pÕdˆ—的数å¦å·¥å…·ä¸é€‰æ‹©ä¸€ä¸ªè¿›è¡Œä‹Éç”¨ä¸€æ —÷€?br />
]]> è¡ŒäØ“èšé›† http://www.aygfsteel.com/canonical/archive/2009/07/11/286397.htmlcanonical canonical Sat, 11 Jul 2009 13:37:00 GMT http://www.aygfsteel.com/canonical/archive/2009/07/11/286397.html http://www.aygfsteel.com/canonical/comments/286397.html http://www.aygfsteel.com/canonical/archive/2009/07/11/286397.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/286397.html http://www.aygfsteel.com/canonical/services/trackbacks/286397.html
A1 --> B2, A2 --> B2, A3 --> B3 ...
我们观察到A1å’ŒA2之间, B2å’ŒB2之间å…ähœ‰æŸç§æ¦‚念兌™”æ€? åŒæ—¶å˜åœ¨æŸç§æŠ½è±¡¾l“æž„ [A] --> [B].
对于˜q™ç§æƒ…况, 我们å¯ä»¥å®šä¹‰å¯¹è±¡ [A], [B], 它们分别æ˜?A1å’ŒA2çš„èšå? B1å’ŒB2çš„èšåˆç‰. 举例æ¥è¯´, å¯¹äºŽå¦‚ä¸‹è¡¨æ ¼æè¿°, <ui:Col>所æä¾›çš„ä¿¡æ¯åœ¨æ˜ 射为html实现的时候将在多处被应用.
<ui:Table data="${data}">
<ui:Col name="fieldA" label="labelA" width="20" />
<ui:Col name="fieldB" label="labelB" width="10" />
</ui:Table>
˜q™é‡Œ<ui:Col>æä¾›çš„ä¿¡æ¯å¯¹åº”三个部分的内容: 1. åˆ—æ ‡é¢?2. åˆ—æ ·å¼?宽度½{? 3. 列数æ?br />
é¢å‘对象的常è§åšæ³•æ˜¯æŠ½è±¡å‡?UiCol对象, 它作为UiTable对象的属性å˜åœ? 在生æˆè¡¨å¤? è¡¨åˆ—æ ·å¼å’Œè¡¨æ ¼æ•°æ®å†…å®ÒŽ(gu¨©)—¶ž®†è¢«ä½¿ç”¨. 但是我们注æ„到é¢å‘å¯¹è±¡è¦æ±‚多个方法通过this指针形æˆçжæ€è€¦åˆ
åQŒåœ¨æŸç§æ„义上它æ„å‘³ç€æ‰€æœ‰çš„æˆå‘˜æ–ÒŽ(gu¨©)³•在ä“Qä¸€æ—¶åˆ»éƒ½æ˜¯åŒæ—¶å˜åœ¨ç€çš„。它们所代表ç€çš„å˜åœ¨çš„代äh(hu¨¢n)必须被接å—(å˜å‚¨½Iºé—´½{‰ï¼‰ã€‚å³ä½¿åƈä¸åŒæ—¶è¢«ä½¿ç”¨åQŒæˆ‘们ä»ç„‰™œ€è¦åŒæ—¶æŒæœ‰æ‰€æœ‰æˆå‘˜å‡½æ•°æŒ‡é’ˆåŠ
å…׃ínçš„this指针。实际上, 我们òq¶ä¸ä¸€å®šéœ€è¦A1å’ŒA2åŒæ—¶åœ¨åœº. 在这¿U情况下, ¾~–译期技术å¯ä»¥æä¾›å¦ä¸€¿Uä¸åŒçš„è¡ŒäØ“èšåˆæ–¹å¼.
<table>
<thead>
<sys:CompileTagBody cp:part="thead" />
</thead>
<cols>
<sys:CompileTagBody cp:part="cols" />
</cols>
<tbody>
<sys:CompileTagBody cp:part="tbody" />
</tbody>
</table>
åªè¦<ui:Col>æ ‡ç¾çš„实çŽîC¸é’ˆå¯¹¾~–译期的cp:partå˜é‡˜q›è¡Œåˆ†åˆ«å¤„ç†, å›_¯å®žçŽ°ä¿¡æ¯çš„部分æžå?
]]> ä¿¡é“æž„å¾ http://www.aygfsteel.com/canonical/archive/2009/03/22/261352.htmlcanonical canonical Sun, 22 Mar 2009 13:10:00 GMT http://www.aygfsteel.com/canonical/archive/2009/03/22/261352.html http://www.aygfsteel.com/canonical/comments/261352.html http://www.aygfsteel.com/canonical/archive/2009/03/22/261352.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/261352.html http://www.aygfsteel.com/canonical/services/trackbacks/261352.html
在系¾lŸè§„划ä¸åQŒå¤šå±‚结构应该内¾|®ä¸Žå…·ä½“è¯ä¹‰æ— 关的通用信é“åQŒå®ƒè·¨è¶Šå¤šä¸ªå±‚次åQŒå…è®æ€¿¡æ¯é€æ˜Žçš„通过åQŒåƈ以未预期的方å¼åœ¨ä¸åŒçš„层颿¿€å‘å„¿Uç›¸å…³çš„è¡ŒäØ“ã€‚åœ¨Witrixòq›_°ä¸ï¼Œòq›_°ä»£ç 与特定应用ä¸çš„业务代ç 处于高度交¾l‡çš„状æ€ï¼Œä¸€ä¸ªç‰¹å®šä¸šåŠ¡åŠŸèƒ½çš„å®žçŽ°å¾€å¾€éœ€è¦å¤šå¤„业务代ç 相互ååŒï¼Œòq›_°å¿…é¡»æˆäØ“æŸç§é€æ˜Žçš„背景。例如,å‡è®¾æˆ‘们¾~–制了一个通用的列表选择控äšg,它å°è£…的逻辑是从一个实体列表丘q›è¡Œé€‰æ‹©
<app:SelectOne objectName="MyEntity" />
å¦‚æžœçŽ°åœ¨è¦æ±‚选择时åªåˆ—出æŸä¸ª¾cÕdž‹çš„实体,则调用åÅžå¼äØ“
<app:SelectOne objectName="MyEntity" extArgs="$bizId=select&$type=1" />
在调用入å£å¤„补充必è¦çš„ä¿¡æ¯ä¹‹åŽä¼šæŽ¨åЍ¾pÈ»Ÿåœ¨é¥˜qœçš„状æ€ç©ºé—´ä¸åº”用一个特定的˜q‡æ×oæ¡äšg。这é‡?bizId负责指示òq›_°åº”用特定的元数æ®é…ç½®åQŒè€Œå…¶ä»–çš„å‚æ•°åˆ™ç”±å…ƒæ•°æ®ä¸çš„逻辑负责处ç†ã€‚åã^åîC¸Žç‰¹å®šä¸šåС代ç å„å–æ‰€éœ€åQŒç›¸äº’é…åˆï¼Œž®†å°½å¯èƒ½å¤šçš„逻辑剥离为通用机制ã€?br />
]]> åŒæž„ä¸ŽåŒæ€ï¼šè®¤è¯†åŒä¸€æ€?/title> http://www.aygfsteel.com/canonical/archive/2009/02/28/257150.htmlcanonical canonical Sat, 28 Feb 2009 08:57:00 GMT http://www.aygfsteel.com/canonical/archive/2009/02/28/257150.html http://www.aygfsteel.com/canonical/comments/257150.html http://www.aygfsteel.com/canonical/archive/2009/02/28/257150.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/257150.html http://www.aygfsteel.com/canonical/services/trackbacks/257150.html
åŒæž„关系对于认知å¯ä»¥èµ·åˆ°æœ¬è´¨ä¸Šçš„½Ž€åŒ–作用。如果通过一个推ç†é“¾æ¡ï¼Œ¼‹®è®¤äº†A == B == C == DåQŒåˆ™å¯ä»¥ç›´æŽ¥ä»Žæ¦‚念上推导å‡?A
== D,
˜q™ä¸€å…³ç³»æœ‰å¯èƒ½è¢«ç›´è§‚ç†è§£åQŒè€Œä¸éœ€è¦ç†ä¼šä¸é—´çš„æŽ¨ç†æ¥éª¤ã€‚(注æ„åˆîC»¥ä¸Šå…ƒç´ 两两å¾ç«‹åŒæž„å…³¾pÈš„时候å¯èƒ½è¦é‡‡ç”¨ä¸åŒçš„对应手ŒDµï¼Œå› æ¤ä¸Šé¢çš„ç‰å¼åÆˆä¸æ˜¯òq›_‡¡
的。)å¦ä¸€æ–šw¢åQŒæˆ‘们å¯ä»¥ç¡®å®šä¸€ä¸ªæ¨¡åž‹å…ƒç´ M, ž®†ç³»¾lŸç®€åŒ–䨓 A == M, B == M, C == M, D ==
M。åªè¦ç†è§£äº†å…ƒç´ Mž®Þq†è§£äº†½{‰äh(hu¨¢n)çš„å…¶ä»–å…ƒç´ ã€?
Witrixòq›_°ä¸PDMå®šä¹‰ä½œäØ“åŸºç¡€çš„ç»“æž„æ¨¡åž‹ï¼Œå®ƒåŒæ—¶æ˜ ž®„æˆä¸ºæ•°æ®åº“表,以åŠhbm, java,
meta½{‰å¤šä¸ªä»£ç æ–‡ä»Óž¼Œæ¤å¤–˜q˜å¯¹åº”于¾U¦å®šçš„WebObjectåç§°å’ŒBizFlowæ–‡äšgåç§°åQŒç›¸åº”的报表文äšg目录½{‰ã€‚我们åªè¦ç†è§£äº†pdm模型åQŒå³å¯é€?
˜q‡æŽ¨ç†è‡ªç„¶çš„æŽŒæ¡å„个层é¢ä¸Šå¯¹åº”çš„¾l“构。这æ„味ç€åªè¦çŸ¥é“实体åç§°åQŒå°±çŸ¥é“如何通过Web讉K—®˜q™ä¸ªå¯¹è±¡åQŒçŸ¥é“æ•°æ®åœ¨æ•°æ®åº“ä¸å¯¹åº”的数æ®åº“表,而ä¸éœ€è¦çŸ¥é?
åŽå°æ˜¯å¦‚何读å–å‰å°æäº¤çš„傿•°ä»¥åŠå¦‚何执行ä¿å˜æ•°æ®æŒ‡ä×o的。ä¸ä»…仅是在模型驱动领域åQŒåœ¨¾pÈ»Ÿè®¾è®¡çš„å„个方é¢ï¼Œæˆ‘们都应该尽é‡å……分的利用当å‰çš„ä¿¡æ¯é€šè¿‡æŽ¨ç†
得到¾pÈ»Ÿå…¶ä»–éƒ¨åˆ†çš„ç»“æž„ï¼Œè€Œä¸æ˜¯é€šè¿‡æ‰‹å·¥å…Œ™”或者判æ–在½E‹åºä¸åЍæ€ç»´æŒè¿™¿U对应关¾p…R€‚例如在flow-cp机制ä¸ï¼Œbizçš„id,
actionçš„id½{‰éƒ½æ ÒŽ(gu¨©)®stepé…置的id推导得到åQŒè¿™æ ·åœ¨å·¥ä½œåˆ—表跌™{的时候就å¯ä»¥æ ÒŽ(gu¨©)®è§„åˆ™æŽ¨å¯¼å‡ø™Ÿ©è½¬é¡µé¢å¯¹åº”的链接åQŒè€Œä¸éœ€è¦æ‰‹å·¥ç¼–写页é¢é‡å®šå‘
代ç ã€?/p>
åŒæ€ï¼ˆhomomorphismåQ‰å…³¾pÈ›¸å¯¹äºŽåŒæž„关系åQŒåªå¼ø™°ƒå•呿˜ å°„çš„å¯è¡Œæ€§ï¼Œå®ƒæ˜¯ä¸€ä¸ªèˆå¼ƒå±žæ€§çš„˜q‡ç¨‹ã€‚åŒæ€ä½œä¸ºæœ€åŸºç¡€çš„认知手ŒDµä¹‹ä¸€åQŒå®ƒä¸ä»…仅是用一
个符åäh¥¾|®æ¢ä¸€¾l„å…ƒç´ ï¼Œè€Œæ˜¯åŒæ—¶ä¿ç•™äº†æŸ¿Uå…¨å±€çš„è¿½Ž—å…³¾p»ï¼Œå› æ¤åŒæ€æ˜ åƒå¯ä»¥æž„æˆæŸ¿Uç‹¬ç«‹çš„å®Œæ•´çš„ç ”½I¶å¯¹è±¡ã€‚é€šè¿‡åŒæ€æ˜ ž®„,我们å¯ä»¥åœ¨ä¸åŒçš„æŠ½è±¡å±‚é¢ä¸Šç ”
½I¶åŽŸ¾pÈ»Ÿçš„一个简化版本。例如metaä¸çš„layout是一¿U典型的领域特定è¯è¨€(DSL)ã€?br />
userName userTitle
emailAddress
æ¯ä¸€ä¸ªå—ŒDµè¡¨½CÞZº†ä¸€ä¸ªå¯èƒ½ä“Qæ„夿‚çš„inputor或者viewer,
å—æ®µä¹‹é—´çš„å‰åŽå…³¾pÀL˜qîCº†æœ€¾lˆæ˜¾½Cºé¡µé¢ä¸Šæ˜„¡¤ºå†…容的相对关¾p…R€‚当vieweræ ÒŽ(gu¨©)®éœ€æ±‚å‘生改å˜çš„æ—¶å€™ï¼Œòq¶ä¸å½±å“到l(f¨¡)ayout层é¢ä¸Šçš„关系åQŒå› æ?
layoutå¯ä»¥ä¿æŒä¸å˜ã€‚如果我们在¾pÈ»Ÿä¸æŠŠé—®é¢˜åˆ†è§£ä¸ºå¤šä¸ªæŠ½è±¡å±‚é¢ä¸ŠåQŒå¤šä¸ªè§‚å¯Ÿè§†è§’ä¸Šçš„åŒæ€æ¨¡åž‹ï¼Œåˆ™å¯èƒ½å®žçŽ°æ›´é«˜çš„è½¯äšgå¤ç”¨½E‹åº¦ã€?br />
在Witrixòq›_°çš„设计ä¸åQŒå¾ˆå¤šç»†¾_’åº¦çš„æ ‡½{ùNƒ½å®šä¹‰ä¸ºtpl文本ŒDµï¼Œ˜q™æ ·òq›_°åªè¦ç†è§£æŸä¸€å±‚é¢ä¸Šçš„交互关系åQŒå®žé™…应用ä¸å¯èƒ½å‡ºçŽ°çš„ç»†èŠ‚åœ¨æ ‡ç¾å†…部˜q›è¡Œå±€
部处ç†ï¼Œä¸ä¼š½Hç ´åŽŸå§‹è®¾è®¡çš„åÅžå¼è¾¹ç•Œï¼Œä¸ä¼šå½±å“到原先设定的ä¸ÖM½“¾pÈ»Ÿ¾l“构。例如BizFlowä¸çš„tplsŒDµï¼Œactionçš„sourceŒD늉ã€?br />
上世¾U?0òq´ä»£ä»¥å‰åQŒç”Ÿç‰©å¦å®¶åšæ¢¦ä¹ŸæƒŒ™±¡ä¸åˆ°å…ähœ‰æ— é™å¤æ‚性的生物é—ä¼ ˜q‡ç¨‹åQŒç«Ÿç„¶å¯ä»¥è¢«æŠ½è±¡ä¸ºATGC四个抽象½W¦å·çš„串è”。生命竟然ä¸ç†ä¼šå„ç§å·²çŸ¥çš„æˆ–æ˜?
未知的物ç†åŒ–å¦ä½œç”¨ï¼Œè¢«æŠ½è±¡çš„三è”ç æ‰€é©±åŠ¨ã€‚ä¸€¿U抽象的本质ä¼ég¹Žæˆäº†ç”Ÿå‘½ä¸–界的本原。在软äšg的世界ä¸åQŒå¯ä»¥è¢«è¯†åˆ«çš„æŠ½è±¡å…ƒç´ ç»ä¸åªæ˜¯è¯a€æœ¬èín所æä¾›çš„é‚£äº?
机制�/p>
]]> ¾cÕdž‹åŒ–:形而上å¦çš„ä¿¡äÔ’ http://www.aygfsteel.com/canonical/archive/2009/02/21/255974.htmlcanonical canonical Sat, 21 Feb 2009 11:43:00 GMT http://www.aygfsteel.com/canonical/archive/2009/02/21/255974.html http://www.aygfsteel.com/canonical/comments/255974.html http://www.aygfsteel.com/canonical/archive/2009/02/21/255974.html#Feedback 2 http://www.aygfsteel.com/canonical/comments/commentRss/255974.html http://www.aygfsteel.com/canonical/services/trackbacks/255974.html
ä¸å›½äººçš„ä¼ ç»Ÿå“²å¦è®¤äؓ世界是普é蔾pÈš„åQŒäº‹ç‰©ä¹‹é—´å˜åœ¨ç€¼œ¸ç¦ç›æ€¾çš„辩è¯è{化关¾p…R€‚而å¤å¸Œè…Šäººå¼ºè°ƒä¸ªä½“æ„识,以两分法看待世界åQŒä»–ä»¬å°†ä¸–ç•Œçœ‹æˆæ˜¯å¤ç«‹çš„物体¾l„æˆåQˆåŽŸå论åQ‰æž„æˆï¼Œç„¶åŽé€‰æ‹©ä¸€ä¸ªå¤ç«‹ç‰©ä½“(è„Þq¦»èƒŒæ™¯åQ‰ï¼Œå¼€å§‹ç ”½I¶å®ƒçš„å„™å¹å±žæ€§ï¼ŒæŽ¥ç€ž®†å±žæ€§æ³›åŒ–,构æˆåˆ†ç±»çš„基¼‹€ã€‚西方è¯a€ä¸å¤§é‡æŠ½è±¡æ¦‚å¿µéƒ½æ˜¯ä»Žä½œäØ“å±žæ€§çš„å½¢å®¹è¯ç›´æŽ¥è{化而æ¥åQŒä¾‹å¦?
white
-->
whiteness
ã€‚è€Œä¸æ–‡ä¸å¾ˆå°‘有精¼‹®çš„¾cÕdž‹å®šä¹‰åQŒè€Œå¤šåŠæ˜¯å¯Œæœ‰è¡¨çŽ°åŠ›çš„åQŒéšå–ÀL€§çš„è¯è¯åQŒä¾‹å¦‚我们ä¸è°ˆè®ºæŠ½è±¡çš„白åQŒè€Œåªè¯´é›ªç™½ï¼Œæ²¡æœ‰æŠ½è±¡çš?
size
åQŒè€Œåªè¯´å…·ä½“的大å°ã€?
亚里士多徯‚®¤ä¸ºé“çƒåœ¨½Iºæ°”ä¸ä¸‹è½æ˜¯å› äØ“å®ƒå…·æœ?#8220;釿€?#8221;åQŒè€Œæœ¨å—åœ¨æ°´ä¸æ¼‚æÕQæ˜¯å› ä¸ºæœ¨å—å…·æœ?#8220;è½ÀL€?#8221;。这¿Uå°†ä¸€åˆ‡åŽŸå› å½’¾l“äØ“äº‹ç‰©å†…åœ¨å±žæ€§çš„ä¼ ç»Ÿåœ¨ä¸€å®šç¨‹åº¦ä¸Šå¦¨ç¢äº†è¥¿æ–¹äh认识到背景的å˜åœ¨å’Œä½œç”¨ï¼Œä½†ä‹É得他们å¯ä»¥æŠŠé—®é¢˜½Ž€åŒ–ã€?
å¤å¸Œè…Šäh对于¾cÕdž‹çš„çƒè¡ähºäºŽä»–们对于永æ’çš„˜qäh‹ã€‚陿€çš„亘å¤ä¸å˜çš„ä¸–ç•Œæ‰æ˜¯ä»–ä»¬çš„æ€æƒ³æ –æ¯çš„场所。具体的物体是易é€çš„åQŒå¤šå˜çš„åQŒåªæœ‰æŠ½è±¡çš„¾cÕdž‹æ‰æ˜¯æ°¸æ’çš„å˜åœ¨ï¼Œä¹Ÿåªæœ‰æŠ½è±¡æ¦‚å¿µä¹‹é—´çš„å…³ç³»æ‰æ˜¯æ°¸çœŸçš„蔾p…R€‚而具体实例之间的兌™”在柿U程度上被认为是ä¸é‡è¦çš„åQŒç”šè‡Ïx˜¯ä¸å¯é çš„ã€?
ž®†å…·æœ‰æŸä¸€å±žæ€§çš„æ‰€æœ‰ç‰©ä½“å®šä¹‰äØ“ä¸€ä¸ªé›†åˆï¼Œ˜q™ä¸€åšæ³•åœ¨ä¸Šä¸–çºªåˆè¢«å‘现会引起逻辑æ‚(zh¨¨n)–论åQŒåŠ¨æ‘‡äº†æ•´ä¸ªæ•°å¦çš„基¼‹€åQŒå®ƒ¾lä¸åƒè¡¨é¢ä¸Šçœ‹è“væ¥é‚£ä¹ˆå•¾U¯ã€‚但¼‹®å®šæ— 疑的是åQŒé€šè¿‡¾cÕdž‹æ¥æŠŠæ¡ä¸å˜çš„事实是一¿Uéžå¸”R‡è¦ä¸”有效的认识ç–略。é¢å‘对象è¯a€å¼ø™°ƒåè¯æ¦?
念,从引入类定义以劾cÖM¹‹é—´çš„¾l§æ‰¿å…³ç³»å¼€å§‹ï¼Œ˜q™ç¬¦åˆè¥¿æ–¹ä¸€è´¯çš„作风。è€?
Ruby
˜q™ç§å¼ø™°ƒå®žä¾‹é—´å…³¾pÈš„动æ€è¯a€é¦–先由日本äh呿˜ŽåQŒå¯èƒ½ä¹Ÿä¸æ˜¯å¶ç„¶çš„。虽然现在大安™ƒ½åœ¨çŽ©é«˜ç§‘æŠ€äº†ï¼Œå¯å®žé™…è´©å–ç»™ä½ çš„å¤šåŠä»ç„¶æ˜¯åŒ…æ²È™¾ç—…çš„¼œ–ä¼ ¿U˜æ–¹ã€‚文化å¯èƒ½é€ æˆè®¤çŸ¥ä¸Šçš„一¿U忉§ï¼Œåœ¨æŠ€æœ¯é¢†åŸŸè¿™ä¸€çŽ°è±¡òq¶æ²¡æœ‰è¢«æ¸…楚的æ„识到ã€?
]]>从编写代ç 到刉™€ 代ç ?/title> http://www.aygfsteel.com/canonical/archive/2009/02/15/254784.htmlcanonical canonical Sun, 15 Feb 2009 10:21:00 GMT http://www.aygfsteel.com/canonical/archive/2009/02/15/254784.html http://www.aygfsteel.com/canonical/comments/254784.html http://www.aygfsteel.com/canonical/archive/2009/02/15/254784.html#Feedback 2 http://www.aygfsteel.com/canonical/comments/commentRss/254784.html http://www.aygfsteel.com/canonical/services/trackbacks/254784.html
软äšgå¼€å‘作ä¸ÞZ¸€¿Uå·¥½E‹æŠ€æœ¯ï¼Œå®ƒæ‰€ç ”究的一个é‡ç‚¹å°±æ˜¯å¦‚何æ‰èƒ½æœ‰æ•ˆé™ä½ŽèÊYä»¶äñ”å“çš„ç ”å‘æˆæœ¬ã€‚在˜q™ä¸€æ–¹å‘上,¾l„äšg技术å–得了½Iºå‰çš„æˆåŠŸã€‚å®ƒæ‰€æä¾›çš„基本图景是
åƒæ¿U¯æœ¨ä¸€æ ·ä»Žæ— 到有的¾l„装出最¾lˆçš„产å“。在æŸç§æ„义上,˜q™æ˜¯å¯¹çް代徽{‘å·¥ä¸šçš„æ¨¡ä»¿å’Œè‡´æ•¬ã€‚æ–°ææ–™åQŒé¢„制äšgåQŒæ¡†æž¶ç»“构,˜q™äº›å»ºç‘å¦çš„˜q›å±•在èÊY仉™¢†åŸŸè¢«ä¸€ä¸€
å¤åˆ¶åQŒå¾½{‘å·¥åœîC¸Šçš„æ°‘工自然也æˆäؓ了程åºå‘˜ä»¬å¦ä¹ çš„æ¥äh¨¡ã€‚毕竟,在组件的世界ä¸ç 代ç åQŒåŸºæœ¬ä¸Šä¹Ÿæ˜¯ä¸€¿U?#8220;æ¬ç –”的行为ã€?/p>
值得庆幸的是åQŒèÊYä»¶å¼€å‘作ä¸ÞZ¸€¿U智力活动,它天生具有一¿U?#8220;åŽÀL°‘工化”的們֑。信æ¯äñ”哿œ‰ç€ä¸Žç‰©è´¨ä¸–界äñ”å“完全ä¸åŒçš„æŠ½è±¡æœ¬è´¨ã€‚在物熽Iºé—´ä¸ï¼Œå»ºé€?00
æ ‹æˆ¿å±‹ï¼Œå¿…é¡»ä»˜å‡º100å€çš„努力åQŒè€è€å®žå®žçš„òq²ä¸Š100é。而在概念½Iºé—´ä¸å¾é€?00æ ‹æˆ¿å±‹ï¼Œæˆ‘ä»¬å´å¯ä»¥è¯´å…¶ä»–æˆ¿å±‹ä¸Žç¬¬ä¸€æ ‹ä¸€æ¨¡ä¸€æ øP¼ŒåŠ ç‚¹òq³ç§»æ—‹è{å˜æ¢å?
å¯ã€‚一å—ç –å¡«äº†åœ°åŸºž®×ƒ¸èƒ½ç”¨æ¥ç›–屋顶åQŒè€Œä¸€ŒDµå†™å¥½çš„代ç å´å¯ä»¥åœ¨ä»ÖM½•å¯ç”¨çš„åœºåˆæ— æŸè€—的被ä‹Éç”¨ã€‚ä¸€æ ‹å¾å¥½çš„æˆ¿å±‹å‘çŽ°æ°´ç®¡æ¼æ°´è¦å¤§åŠ¨å¹²æˆˆï¼Œè€Œåœ¨å®Œæˆçš„èÊYä»¶ä¸
补个局部bugå´æ˜¯ž®èœä¸€¼„Ÿã€‚åœ¨æŠ½è±¡çš„ä¸–ç•Œä¸æœ‰æ•ˆçš„进行生产,所ä¾èµ–çš„ä¸åº”该是大òq?è‹¦å¹²çš„å †ç Œï¼Œè€Œåº”è¯¥æ˜¯å‘现æŸç§å¯ç”¨äºŽæŽ¨å¯¼çš„原ç†åQŒåŸºäºŽè¿™äº›åŽŸç†ï¼Œè¾“å…¥
ä¿¡æ¯å¯ä»¥ç«‹åˆ»è½¬æ¢ä¸ºæœ€¾lˆçš„¾l“æžœåQŒè€Œä¸éœ€è¦ä¸€ä¸ªé€æ¥æž„é€ çš„˜q‡ç¨‹ã€‚峿ˆ‘们有å¯èƒ½è¶…‘Šç»„装性生产,实现æŸç§¾cÖM¼¼äºŽæ•°å¦çš„åŽŸç†æ€§ç”Ÿäº§ã€?a mce_href="/blog/325051">http://canonical.javaeye.com/blog/325051
代ç å¤ç”¨æ˜¯ç›®å‰èÊY件业ä¸é¼“åšw™ä½Žç”Ÿäº§æˆæœ¬çš„主è¦å£å·ä¹‹ä¸€ã€‚但是在¾l„äšg技术的指å‘下,一般所å¤ç”¨çš„åªæ˜¯ç”¨äºŽæž„å»ºçš„ç –å—åQŒè€ŒåÆˆä¸æ˜¯æŸç§æž„é€ åŽŸç†ã€‚å³ä½¿åœ¨æ‰€æœ‰ä¿¡
æ¯å·²¾l确定的情况下,我们ä»ç„¶ä¸å¯èƒ½ä»Žéœ€æ±‚ç«‹åˆÕd¾—åˆ°å¯æ‰§è¡Œçš„äñ”å“。很多代ç å³ä½¿æˆ‘们在惌™±¡ä¸å·²¾l历历在目,å´ä»ç„‰™œ€è¦ä¸€è¡Œè¡ŒæŠŠå®ƒä»¬èªŠå†™ä¸‹æ¥ã€‚当我们å‘现¾p?
¾lŸä¸å·²ç»æ²¡æœ‰ä»ÖM½•¾l„äšg值得抽象的时候,ä»ç„¶ç•™ä¸‹æ¥ä¼—å¤šçš„å·¥ä½œéœ€è¦æœºæ¢°åŒ–的执行。代ç å¤ç”¨çš„ç†æƒ³å›½è·¼›ÀLˆ‘们ä»ç„‰™žå¸¸çš„é¥è¿œã€?/p>
å例½E?subroutine)是最早的代ç é‡ç”¨æœºåˆ¶ã€‚è¿™ž®±åƒæ˜¯å°†æ˜¨å¤©å·²ç»å®Œæˆçš„工作录制下æ¥ï¼Œåœ¨éœ€è¦çš„æ—¶å€™é‡æ–°æ’放。函æ•?function)相对于å
ä¾‹ç¨‹æ›´åŠ å¼ºå¤§ã€‚å¾ˆå¤šä»£ç 看èµäh¥òq¶ä¸ä¸€æ øP¼Œä½†æ˜¯å¦‚果把其ä¸çš„差异部分看作是å˜é‡ï¼Œé‚£ä¹ˆå®ƒä»¬çš„结构就å¯ä»¥¾lŸä¸€äº†ã€‚å†åŠ ä¸Šä¸€äº›åˆ¤æ–和循环åQŒå¾ˆå¤šé¢ç›®èòE异的东西å…?
实是å˜åœ¨ç€å¤§é‡å…׃ínä¿¡æ¯çš„。é¢å‘对象技术是一‹Æ¡é£žè·ƒæ€§çš„å‘展。众多相关信æ¯è¢«æ‰“包åˆîC¸€ä¸ªå¿UŽÍ¼ˆ¾cÕdž‹åQ‰ä¸åQŒå¤ç”¨çš„¾_’åº¦å’Œå¤æ‚度都大大æå‡ã€‚派生类从基¾cÈ‘ô
承,å¯ä»¥é€šè¿‡é‡è²å®žçŽ°å¯¹åŽŸæœ‰ä»£ç çš„¾l†è‡´è°ƒæ•´ã€‚丘q‡ï¼Œ˜q™ç§æ–¹å¼ä»ç„¶æ— 法满èƒö日益增长的å¤ç”¨éœ€æ±‚。很多时候,一个å¿U°åƈä¸èƒöä»¥æ ‡å®šæˆ‘ä»¬æœ€¾lˆéœ€è¦çš„ä»£ç ¾l“æž„åQŒåœ¨
实际使用的时候还需è¦è¡¥å……更多的信æ¯ã€‚ç±»åž‹å‚æ•°åŒ–åQŒå³æ³›åž‹æŠ€æœ¯ï¼Œä»Žäº‹åŽçš„角度看其实是一¿U明昄¡š„解决æ–ÒŽ(gu¨©)¡ˆã€‚æ ¹æ®å‚数动æ€çš„生æˆåŸºç±»è‡ªç„¶å¯ä»¥å¸çº³æ›´å¤šçš„å˜
化。ç»åŽ†äº†æ‰€è°“Modern
C++çš„å‘展之åŽï¼Œæˆ‘们现在已ç»éžå¸¸æ˜Žç¡®åQŒæ³›åž‹åƈéžä»…仅能够实现类型共å˜ï¼Œè€Œæ˜¯å¯ä»¥ä»Žç±»åž‹å‚æ•îC¸å¼•入更丰富的¾l“构信æ¯åQŒå®ƒçš„æœ¬è´¨æ˜¯ä¸€¿U代ç 生æˆçš„˜q‡ç¨‹ã€?a mce_href="/blog/57244">http://canonical.javaeye.com/blog/57244
认清了这一点,它的扩展ž®±éžå¸¸æ˜Žæ˜¾äº†
BaseClass < ArgClass > --> CodeGenerator < DSL >
DSLåQˆæˆ–者柿U模型对象)相对于普通的¾cÕdž‹(Class)åQŒä¿¡æ¯å¯†åº¦è¦å¤§å¾ˆå¤šï¼Œå®ƒå¯ä»¥æä¾›æ›´ä¸°å¯Œä¹Ÿæ›´å®Œæ•´çš„输入信æ¯ã€‚而CodeGenerator也ä¸å¿…拘泥于基础è¯è¨€æœ¬èínæä¾›çš„å„¿U编译机åˆÓž¼Œè€Œæ˜¯å¯ä»¥ç‰|´»åº”用å„ç§æ–‡æœ¬ç”ŸæˆæŠ€æœ¯ã€?a mce_href="/blog/309395">http://canonical.javaeye.com/blog/309395
CodeGenerator在这里所æä¾›çš„æ£æ˜¯æ ¹æ®è¾“入模型推导出完整实现代ç çš„æž„é€ åŽŸç†ã€?/p>
现在很多人çƒè¡·äºŽå¼€å‘自å·Þqš„½Ž€æ˜“代ç 生æˆå·¥å…øP¼Œ˜q™äº›å·¥å…·ä¹Ÿè®¸å¯ä»¥åœ¨ç®€å•的情åŞ下å‡è½ÖM¸€äº›ä½“力工作,但是生æˆçš„代ç 一般ä¸èƒ½ç›´æŽ¥æ»¡‘³éœ€æ±‚,ä»ç„¶éœ€è¦æ‰‹å·¥æ‰§è¡?
大é‡çš„åˆ æ”¹å·¥ä½œã€‚å½“ä»£ç 生æˆä¹‹åŽåQŒå®ƒæˆäؓ一¿U固化的物质产å“åQŒä¸å†èƒ½å¤Ÿéšç€ä»£ç 生æˆå·¥å…·çš„æ”¹˜q›è€ŒåŒæ¥æ”¹˜q›ï¼Œåœ¨é•¿æœŸçš„¾pÈ»Ÿæ¼”化˜q‡ç¨‹ä¸ï¼Œ˜q™äº›å·¥å…·òq¶ä¸ä¸€å®šèƒ½å¤?
å‡å°‘累积的工作é‡ã€?br />
修棘q‡ç¨‹ ==> CodeGenerator < DSL >
ä¸ÞZº†æ”¹è¿›ä»¥ä¸Šä»£ç 生äñ”˜q‡ç¨‹åQŒä¸€äº›äh试图在CodeGeneratorä¸å¼•入越æ¥è¶Šå¤šçš„å¯é…¾|®æ€§ï¼Œž®†å„¿Uå˜åŒ–çš„å¯èƒ½å†…ç½®åœ¨æž„é€ åŽŸç†ä¸ã€‚æ˜¾ç„¶è¿™ä¼šé€ æˆCodeGeneratorçš„ä¸æ£å¸¸çš„肿胀。当更多的å¶ç„¶æ€§è¢«åŒ…å«åœ¨åŽŸç†ä¸çš„æ—¶å€™ï¼Œå¿…ç„¶ä¼šç ´å原ç†çš„½Ž€å•性和普适性ã€?
è¾“å…¥ä¿¡æ¯ + 一ŒD는¨äºŽæŽ¨å¯¼çš„åŽŸç† + ä¿®æ£è¡¥å…… = 真实模型
å¿…é¡»å˜åœ¨[ä¿®æ£è¡¥å……]˜q™ä¸€™åÒŽ(gu¨©)‰èƒ½ç»´æŒä»¥ä¸Šæ–¹½E‹çš„æŒä¹…òqŒ™¡¡ã€?/p>
ä¸ÞZº†æ‘†è„±äººå·¥ä¿®æ£˜q‡ç¨‹åQŒå°†æ¨¡åž‹è°ƒæ•´¾U›_…¥åˆ°æ¦‚念世界ä¸åQŒæˆ‘们需è¦è¶…‘Šç‘ô承机制的åQŒæ›´åŠ å¼ºå¤§çš„åQŒæ–°çš„æŠ€æœ¯æ‰‹ŒDüc€‚其实在当å‰çš„æŠ€æœ¯èƒŒæ™¯ä¸‹åQŒè¿™ä¸€æŠ€æœ¯å·²¾l是å‘ég¹‹‹Æ²å‡ºäº†ã€‚è¿™ž®±æ˜¯AOP, Aspect Oriented Programmingã€?a mce_href="/blog/34941">http://canonical.javaeye.com/blog/34941
Biz == [AOP extends ] ==> CodeGenerator < DSL >
¾l§æ‰¿ä»…仅能够实现åŒåæ–ÒŽ(gu¨©)³•之间的简å•覆盖,而AOP所代表的技术原ç†å´æ˜¯åœ¨ä»£ç ¾l“æž„½Iºé—´ä¸è¿›è¡Œä“Qæ„夿‚çš„åˆ æ”¹æ“作,它潜在的能力½{‰äh(hu¨¢n)于äh工调整ã€?/p>
ä¸ÞZº†å®žçŽ°ä¸Šè¿°ç”Ÿäñ”模å¼åQŒéœ€è¦å¯¹¾~–程è¯è¨€åQŒç»„件模型,框架设计½{‰æ–¹é¢è¿›è¡Œä¸€¾pÕdˆ—攚w€ 。目å‰é€šç”¨çš„AOP实现和元¾~–ç¨‹æŠ€æœ¯å…¶å®žåÆˆä¸èƒö以支æŒä»¥ä¸Šæ¨¡å¼ã€?a mce_href="/blog/275015">http://canonical.javaeye.com/blog/275015
˜q™ä¸€ç”Ÿäñ”模弞®†ä¼šå¦‚何演化åQŒä¹Ÿæ˜¯ä¸€ä¸ªæœ‰‘£çš„问题。按照çñ”列ç†è®ºï¼Œæˆ‘们立刻å¯ä»¥å¾—到如下å‘展方å‘åQ?/p>
Context0 + DSL1 + EXT0 = DSL0
Context1 + DSL2 + EXT1 = DSL1
http://canonical.javaeye.com/blog/33824
Witrixòq›_°ä¸BizFlowå¯ä»¥çœ‹ä½œæ˜¯å¯¹DaoWebActionçš„ä¿®æ£æ¨¡åž‹ï¼Œä½†æ˜¯å®ƒæœ¬íw«å…·æœ‰å®Œæ•´çš„æ„ä¹‰åQŒå¯ä»¥ç›´è§‚的被ç†è§£ã€‚在BizFlow的基¼‹€ä¸Šå¯ä»¥é€æ¥å»ºç«‹SeqFlowåQŒStateFlow½{‰æ¨¡åž‹ã€?a mce_href="/blog/126467">http://canonical.javaeye.com/blog/126467
çŽ°åœ¨æœ‰äº›äºø™¯•图深挖函数å¼è¯è¨€åQŒåˆ©ç”¨æ¨¡å¼åŒ¹é…之¾cÈš„概念åQŒåš½W¦å·½Iºé—´çš„全局优化。但是我们需è¦è®¤è¯†åˆ°é€šç”¨çš„æœºåˆ¶æ˜¯å¾ˆå°‘的,能够在通用è¯è¨€èƒŒæ™¯ä¸‹è¢«æ˜Žç¡®æå‡º
的问题更是很ž®‘çš„ã€‚åªæœ‰åœ¨ç‰¹å®šé¢†åŸŸä¸ï¼Œåœ¨æŽŒæ¡æ›´å¤šå±€éƒ¨ä¿¡æ¯çš„æƒ…况下,我们æ‰èƒ½æå‡ºä¸°å¯Œçš„问题,òq¶ä½œå‡ÞZ¸€å®šèƒŒæ™¯ä¸‹çš„è§£½{”。DSL的世界ä¸å¾…åšçš„å’Œå¯åšçš„å·¥ä½?
很多�a mce_href="/blog/147065">http://canonical.javaeye.com/blog/147065
对于½E‹åºå‘˜è€Œè¨€åQŒæœªæ¥å°†å˜å¾—‘Šæ¥‘Šä¸°å¯Œè€Œå¤æ‚,它将æŒç®‹æ‹·é—®æˆ‘ä»¬çš„æ´žå¯ŸåŠ›ã€‚æˆ‘ä»¬ä¸æ˜¯ä¸€è¡Œè¡Œçš„编写代ç ï¼ŒæŠŠéœ€æ±‚ä¸€æ¡æ¡çš„翻译到æŸç§å®žçŽ°ä¸Šï¼Œè€Œæ˜¯ä¸æ–呿˜Žå±€éƒ¨çš„生äñ”原ç†åQŒä¾é 自己制定的规则在抽象的½Iºé—´ä¸ä¸æ–çš„åˆ›é€ æ–°çš„è¡¨è±¡ã€?br />
]]> 逆元åQšä¸å˜åœ¨çš„真实å˜åœ? http://www.aygfsteel.com/canonical/archive/2009/02/07/253744.htmlcanonical canonical Sat, 07 Feb 2009 14:22:00 GMT http://www.aygfsteel.com/canonical/archive/2009/02/07/253744.html http://www.aygfsteel.com/canonical/comments/253744.html http://www.aygfsteel.com/canonical/archive/2009/02/07/253744.html#Feedback 1 http://www.aygfsteel.com/canonical/comments/commentRss/253744.html http://www.aygfsteel.com/canonical/services/trackbacks/253744.html
è´Ÿæ•°æ²¡æœ‰ç›´æŽ¥çš„å‡ ä½•æ„ä¹‰ï¼Œå› æ¤å®ƒè¢«è®¤äؓ是对应于ä¸å˜åœ¨çš„事物。而按照å¤å¸Œè…Šçš„逻辑åQŒä¸å˜åœ¨çš„事物是ä¸å¯èƒ½å˜åœ¨çš„åQŒå› 而也ž®±æ˜¯æ— 法被ç†è§£çš„åQŒæ›´ä¸å¯èƒ½å‚与到
推熘q‡ç¨‹ä¸ï¼Œå› æ¤æ˜¯æ— æ„ä¹‰çš„ï¼Œæ— æ³•è¢«å®šä¹‰çš„åQ?
å› æ¤å®ƒæ˜¯ä¸å˜åœ¨çš„。ä¸å›½äh注é‡çš„æ˜¯˜qç®—çš„åˆç†æ€§ï¼Œè€Œä¸æ˜¯æ•°çš„çœŸç†æ€§ï¼Œå¤§æ¦‚在公元å‰400òq´å·¦å›_°±åˆ›é€ 了负数和零的概å¿üc€‚而在西方直到公元7世纪åQˆå”代)çš?
一本å°åº¦ähçš„è‘—ä½œä¸æ‰å‡ºçŽ°è´Ÿæ•ŽÍ¼Œå®ƒè¢«ç”¨æ¥è¡¨ç¤ºè´Ÿå€ºã€‚西方ähæ²¡æœ‰èƒ½å¤Ÿåˆ›é€ è´Ÿæ•ŽÍ¼Œä»–ä»¬å¯¹è´Ÿæ•°çš„æŽ¥å—æ›´è¿Ÿè‡?5世纪左å³ã€‚这件事实在一定程度上说明了å˜åœ¨æŸ¿Uæ·±
åˆÈš„å›°éš¾é˜È¢æˆ‘们ç†è§£è´Ÿæ•°æ¦‚念ã€?br />
在引入负æ•îC¹‹å‰ï¼Œ3x^2 + 8 = 4x å’?nbsp; 3x^2 + 4x + 8 = 0
˜q™ä¸¤ä¸ªæ–¹½E‹çš„¾l“构是完全ä¸åŒçš„åQŒå®ƒä»¬éœ€è¦ä¸åŒçš„æ±‚è§£æŠ€æœ¯ï¼Œå› æ¤ä¹Ÿå°±ä¸å¯èƒ½åˆ©ç”¨ç¬¦åähŠ½è±¡å‡º a x^2 + b x + c =
0。引入负数æ‰ä½¿å¾—æˆ‘ä»¬èƒ½å¤Ÿä»¥ç»Ÿä¸€çš„æ–¹å¼æå‡ºé—®é¢˜ï¼Œòq¶ç ”½I‰™€šç”¨çš„æ±‚解技术ã€?br />
¾Ÿ¤è®º(Group Theory)是对¾l“æž„˜q›è¡ŒæŠ½è±¡ç ”究的数å¦åˆ†æ”¯ã€‚群的定义包括四æ¡è§„åˆ?br />
1. å…ƒç´ ä¹‹é—´çš„è¿½Ž—æ»¡‘³ç»“åˆå¾‹ (a * b) * c = a * (b * c)
2. å…ƒç´ ä¹‹é—´çš„è¿½Ž—å°é—,å?a * b ä»ç„¶å±žäºŽè¯¥ç¾¤
3. å˜åœ¨å•ä½å…ƒï¼Œå›_¯¹æ‰€æœ‰a, a * e = e*a = a
4. æ¯ä¸ªå…ƒç´ å˜åœ¨å¯¹åº”的逆元åQŒa * a^-1= e
é€†è¿½Ž—æ˜¯éžå¸¸é‡è¦çš„ç»“æž„è¦æ±‚,逆元是对负数的一¿U抽象推òqÑ€‚如果没有逆元åQŒåˆ™åªèƒ½æž„æˆåŠç¾¤(semi-group)åQŒå®ƒçš„æ€§è´¨è¦å°‘很多ã€?/p>
ç›®å‰è½¯äšgè®¾è®¡ä¸æ‰€æœ‰çš„原则都指å‘组装过½E‹ï¼Œä»Žæ— 到有åQŒå±‚层篘q›ã€‚构件组装的éšå–»ä¸æ‰€åŒ…å«çš„å›¾åƒæ˜¯æ“纵实际å¯è§çš„积木,是缺ž®‘逆元概念的ã€?/p>
考察一个简å•的例ååQŒå‡è®ùNœ€è¦çš„äº§å“æ˜¯ä¸‰è§’åŞ内部挖去一个五边åŞ的剩余部分。有三ç§ç”Ÿäñ”½{–ç•¥åQ?br />
1. å¯ÒŽ(gu¨©)œ€¾lˆéœ€è¦çš„产å“å½¢æ€è¿›è¡Œä¸‰è§’剖分,使用8个å°ä¸‰è§’形拼接出æ¥ã€‚è¿™¿Uæ–¹å¼æ¯”较ç¹ç,而且最åŽç²˜æŽ¥å·¥åºçš„å¯é 性和¾_„¡¡®æ€§å€¼å¾—怀疑ã€?br />
2. 拿到一个真实的三角形,然åŽç”¨åˆ€åœ¨å†…部挖å‡ÞZ¸€ä¸ªäº”è¾¹åŞ的洞。这¿Uæ–¹å¼éœ€è¦æ¶ˆè€—一定的人工åQŒè€Œä¸”也很难ä¿è¯äº”è¾¹åŞ的精¼‹®æ€§ï¼Œå³ä‹É我们曄¡»¾_„¡¡®çš„ç”Ÿäº§è¿‡å…¶ä»–äº”è§’å½¢å’Œä¸‰è§’å½¢ã€‚å®žé™…ä¸Šä¸€èˆ¬æƒ…å†µä¸‹æˆ‘ä»¬æ˜¯é€æ¥é”‰å‡ºä¸€ä¸ªäº”è¾¹åŞ的,òq¶æ²¡æœ‰å……分利用到五边形的对称性ã€?br />
3. 在概å¿ëŠ©ºé—´ä¸åšä¸€ä¸ªæŠ½è±¡è®¡½Ž?nbsp; (-五边å½? + (三角å½? = 所需产å“
如果我们能够生äñ”一¿U负的五边åŞ和一¿Uæ£çš„三角åÅžåQŒåˆ™å¯ä»¥ç«‹åˆ»å¾—到最¾lˆçš„产å“ã€?br />
在èÊYä»¶å¼€å‘的实践ä¸ï¼Œæˆ‘们目å‰å¤šæ•°é‡‡ç”¨çš„æ˜¯ä¸¤ç§æ–¹å¼åQ?br />
1. 采用å¯è§†åŒ–设计工具通过拖拽æ“作开å‘出完整的界é¢å’ŒåŽå°
2. 拯‚´ä¸€äº›å·²æœ‰çš„代ç åQŒåˆ 除掉ä¸éœ€è¦çš„部分åQŒå¢žåŠ ä¸€äº›æ–°çš„å®žçŽŽÍ¼Œä¹Ÿå¯èƒ½å¯¹å·²æœ‰å®žçްåšä¸€äº›ä¸å…¼å®¹çš„ä¿®æ£ã€?br />
åœ¨ç¬¬äºŒç§æ–¹å¼ä¸?br />
新结构的构é€?= 已有¾l“æž„ + 软äšg之外的由人执行的一个剪è£è¿‡½E?br />
˜q™ä¸ªå‰ªè£˜q‡ç¨‹è¡¨çްä¸ÞZ¸€ä¸ªæ—¶é—´åºåˆ—。如果我们对原有¾l“æž„˜q›è¡Œäº†è°ƒæ•ß_¼Œåˆ™éœ€è¦é‡æ–°å…³è”一个时间åºåˆ—ï¼Œè€Œæ¤æ—‰™—´åºåˆ—òq¶ä¸ä¼šè‡ªåЍ釿’ã€‚äØ“äº†åŽ‹¾~©ä»¥æ—‰™—´ä¸ºåº¦é‡å•ä½çš„
生äñ”æˆæœ¬åQŒæˆ‘们必™åÕd‡ž®‘对旉™—´åºåˆ—çš„ä¾èµ–。在旉™—´åºåˆ—ä¸å±•å¼€çš„ä¸€ä¸ªæž„é€ è¿‡½E‹å¯ä»¥è¢«è½¬åŒ–ä¸ÞZ¸€ä¸ªé«˜¾l´è®¾è®¡ç©ºé—´ä¸çš„一¿Uæ›´åŠ ä¸°å¯Œçš„æž„é€ åŽŸç†ï¼Œæˆ‘们最¾lˆçš„观测å¯ä»¥
看作是设计空间å‘物熽Iºé—´çš„一个投影(惌™±¡ä¸€æŸå…‰æ‰“下æ¥ï¼‰ã€‚è¿™¿Uæ–¹å¼æ›´å®ÒŽ(gu¨©)˜“ä¿è¯½E‹åºçš„æ£¼‹®æ€§ã€?br />
æ—‰™—´åºåˆ— --[原ç†è½¬åŒ–]--> ½Iºé—´å…³ç³»
˜q™æ ·æˆ‘们ž®±å¯ä»¥ä‹É用第三ç§ç”Ÿäñ”½{–ç•¥åQšåˆ©ç”¨æž„é€ åŽŸç†è¿›è¡ŒæŠ½è±¡è®¡½Ž—。如果我们åªç›¯ç€äº§å“的最¾lˆåÅžæ€çœ‹åQŒåªæ˜¯æƒ³ç€æ€Žä¹ˆæŠŠå®ƒåƒæ¿U¯æœ¨ä¸€æ äh建出æ¥ï¼Œž®×ƒ¸å¯èƒ½è¯†åˆ«å‡?
¾pÈ»Ÿ¾l“构本èín所蕴å«çš„对¿U°æ€§ã€‚如果我们å‘çŽîCº†¾pÈ»Ÿå†…蕴的结构特å¾ï¼Œä½†æ˜¯å´åªèƒ½é€šè¿‡æž„é€ è¿‡½E‹ä¸çš„行动åºåˆ—楘q½éšå®ƒï¼ŒåŒæ ·æ— 法实现有效的工作å¤ç”¨ã€‚åŒæ—¶å› 䏸™¿™
个行动åºåˆ—一般处于系¾lŸè§„则约æŸä¹‹å¤–,完全ç”׃h的自觉æ¥ä¿éšœåQŒå› æ¤å¾ˆéš¾ä¿è¯å®ƒçš„æ£¼‹®æ€§ã€‚çŽ°å®žä¸–ç•Œçš„è§„èŒƒè¦æ±‚òq¶ä¸æ˜¯æ¨¡åž‹æœ¬íw«æ‰€å¿…须满èƒö的,åªè¦æˆ‘们能够创é€?
æ–°çš„¾l“构原ç†åQŒåœ¨æ¦‚念½Iºé—´ä¸æˆ‘们就å¯ä»¥æ‹¥æœ‰æ›´å¤šçš„自由。现在业内鼓å¹çš„软äšgæž„é€ åŽŸç†å¤šåŠæ˜¯å‚照物ç†ä¸–界ä¸ç”Ÿäº§å…·ä½“物质äñ”å“的生äñ”å·¥åºåQŒå´æ²¡æœ‰çœŸæ£æŠŠæ¡ä¿¡æ¯çš„æŠ½è±¡æœ¬è´¨ã€‚掌æ¡è§„则,制订规则åQŒæ‰æ˜¯ä¿¡æ¯ç©ºé—´ä¸çš„æ¸¸æˆè§„则ã€?br />
物ç†å¦ä¸æœ€é‡è¦çš„分æžå¦æ€æƒ³ä¹‹ä¸€æ˜¯å¾®æ‰°è®º(Perturbation).
é’ˆå¯¹ä¸€ä¸ªå¤æ‚的物ç†çŽ°è±¡åQŒé¦–å…ˆå¾ç«‹ä¸€ä¸ªå…¨å±€çš„规范的模型åQŒç„¶åŽè€ƒè™‘å„ç§å¾®æ‰°æ¡äšg对原有模型的影å“。在ž®æ‰°åŠ¨æƒ…å†µä¸‹åQŒæ¨¡åž‹çš„å˜åŒ–部分往往å¯ä»¥è¢«çº¿æ€§åŒ–åQŒè¢«å±€
域化åQŒå› 而问题得到简化。微扰分æžå¾—到的解ä¾èµ–于全局模型的解而å˜åœ¨ï¼Œå› 而这是一¿U主从关¾pÈš„分解方å¼ã€‚但是如果主体模型是我们已ç»ç†ŸçŸ¥çš„物ç†çŽ°è±¡ï¼Œåˆ™æˆ‘
们关注的é‡ç‚¹å¯ä»¥å…¨éƒ¨æ”‘Öœ¨æ‰°åŠ¨è§£ä¸ŠåQŒè®¤ä¸ºæ‰€æœ‰ç‰¹å®šçš„物ç†è§„律都体现在扰动解ä¸ã€‚如果微扰分æžå¾—到的物ç†å…ƒç´ ‘›_¤Ÿä¸°å¯ŒåQŒåˆ™å¾®æ‰°æ¨¡åž‹æœ¬èínå¯ä»¥æˆäØ“ç‹¬ç«‹çš„ç ”½I¶å¯¹
è±¡ï¼Œåœ¨å…¶ä¸æˆ‘ä»¬åŒæ ·å¯ä»¥å‘现柿U普适的¾l“构规律ã€?br />
è€ƒå¯Ÿå¦‚ä¸‹çš„æž„é€ è¿‡½E?br />
X = a + b + c
Y = a + b + d = (a + b + c) - c + d = X - c + d
对于数å¦è€Œè¨€åQŒä¸Š˜q°çš„æŽ¨å¯¼æ˜¯ç‰ä»ïL(f¨¥ng)š„åQŒä½†æ˜¯å¯¹äºŽç‰©ç†å¦è€Œè¨€åQŒY = a + b + d å’?nbsp; Y = X - c +
dæ˜¯æœ‰ç€æœ¬è´¨ä¸åŒçš„。第一¿Uæ–¹å¼è¦æ±‚æ‰“ç ´åŽŸå…ˆXçš„æž„é€ ï¼Œè€Œé‡æ–°çš„¾l„è£…å…¶å®žæ˜¯æœ‰æˆæœ¬çš„,特别是在X本èínéžå¸¸å¤æ‚的情况下。典型的åQŒå¦‚æžœX是绘q‡æµ‹è¯•的功能åQ?
釿–°¾l„装åŽåŽŸå…ˆç”±‹¹‹è¯•ä¿éšœçš„æ¦‚å¿µè¾¹ç•Œè¢«æ‰“ç ´ã€?br />
我们å¯ä»¥ä»ŽY = X + dX抽象出扰动模åž?nbsp; dX = - c + d
ä¸ÖM»Žåˆ†è§£æ¨¡å¼è‡ªç„¶çš„导出逆元概念ã€?br />
如果没有逆元åQŒæˆ‘们必焉™œ€è¦åˆ†è§£ã€‚ä½†æ˜¯å¦‚æžœå‘æŽ˜äº†èƒŒæ™¯˜q™ä¸€æ¦‚念åQŒåœ¨é€†å…ƒ˜qç®—ä¸‹ï¼Œå¯¹èƒŒæ™¯ä¸æ˜¯åˆ†è§£è®©å…¶æˆä¸ºå¯è§çš„部分åQŒè€Œæ˜¯é‡‡ç”¨˜q½åŠ çš„ï¼Œå¢žåˆ çš„æ–¹æ³•å¯¹èƒŒæ™¯¾l“æž„
˜q›è¡Œä¿®æ£åQŒåˆ™æˆ‘们有å¯èƒ½åœ¨æ²¡æœ‰å®Œæ•´èƒŒæ™¯çŸ¥è¯†çš„æƒ…况下åQŒç‹¬ç«‹çš„ç†è§£å±€éƒ¨å˜åŒ–çš„¾l“构。å³èƒŒæ™¯æ˜¯é€æ˜Žçš„,知识æˆäؓ局部的。在Witrixòq›_°ä¸ï¼ŒBizFlow
+ DaoWebAction + StdPage
æ‰æž„æˆå®Œæ•´çš„½E‹åºæ¨¡åž‹åQŒBizFlowå…¶å®žæ˜¯å¯¹æ ‡å‡†æ¨¡åž‹çš„å·®å¼‚æ˜qŽÍ¼Œä½†æ˜¯å®ƒå¯ä»¥è¢«å•独的ç†è§£ã€‚如果我们从接触½E‹åºå¼€å§‹å°±æŽ¥å—BizFlow,
ž®±å¯èƒ½å®Œå…¨ä¸éœ€è¦äº†è§£æ•°æ®åº“讉K—®å’Œå‰å°ç•Œé¢æ¸²æŸ“çš„çŸ¥è¯†ã€‚æˆ‘ä»¬åÆˆä¸æ˜¯é€šè¿‡åœ¨DaoWebActionä¸è®¾å®šå„¿Uå¯é¢„è§çš„调用åÅžå¼ï¼Œè€Œæ˜¯åœ¨BizFlowä¸é€?
˜q‡ç±»ä¼¼AOPçš„æ“作方å¼ç›´æŽ¥å¯¹æ ‡å‡†æ¨¡åž‹˜q›è¡Œä¿®æ£ã€‚è¿™¿Uä¿®æ£ä¸ä¸€ä¸ªå¾ˆé‡è¦çš„éƒ¨åˆ†å°±æ˜¯åˆ é™¤æ ‡å‡†æ¨¡åž‹ä¸¾~ºçœæä¾›çš„功能ã€?br />
WebMVC之å‰ä¸–今ç”?http://canonical.javaeye.com/blog/163196
Witrixæž¶æž„åˆ†æž http://canonical.javaeye.com/blog/126467
å˜åŒ–的部分构æˆç‹¬ç«‹äºŽåŽŸå§‹æ¨¡åž‹çš„æ–°çš„æ¨¡åž‹ï¼Œå®ƒçš„¾l“构关系是完备的åQŒå¯ä»¥ç‹¬ç«‹çš„ç†è§£ã€‚在原始模型崩溃的情况下åQŒå®ƒä»ç„¶å¯èƒ½ä¿æŒæœ‰æ•ˆæ€§ã€?br />
从物ç†å¦çš„角度看åQŒæˆ‘们所观测到的一切物ç†çŽ°è±¡ï¼Œéƒ½æ˜¯æŸç§ç‰©ç†ä½œç”¨çš„结果,也就是物质结构相对于背景状况的一¿Uå¼›…R€‚我们åªå¯èƒ½è§‚测到å˜åŒ–的部分åQŒå› æ¤æˆ‘ä»¬å¯¹ä¸–ç•Œçš„è®¤è¯†å…¶å®žåªæ˜¯ä¸–界的扰动模型而已åQŒä¸–界的本体ä¸å±žäºŽç§‘å¦ç ”½I¶çš„范畴ã€?/p>
]]> 文本�/title> http://www.aygfsteel.com/canonical/archive/2009/01/04/249666.htmlcanonical canonical Sat, 03 Jan 2009 16:55:00 GMT http://www.aygfsteel.com/canonical/archive/2009/01/04/249666.html http://www.aygfsteel.com/canonical/comments/249666.html http://www.aygfsteel.com/canonical/archive/2009/01/04/249666.html#Feedback 1 http://www.aygfsteel.com/canonical/comments/commentRss/249666.html http://www.aygfsteel.com/canonical/services/trackbacks/249666.html
软äšg技术的å‘å±•æ˜¯ä¸€ä¸ªç»“æž„åŒ–ä¸æ–åŠ æ·±çš„è¿‡½E‹ï¼Œæˆ‘们逿¸æ‹¥æœ‰äº†è¶Šæ¥è¶Šä¸°å¯Œçš„结构识åˆ? è¡¨è¾¾å’Œå¤„ç†æ‰‹ŒDüc€‚在˜q™ä¸€æ–¹å‘ä¸?
¾l„äšg技术最¾lˆå–得了巨大的商业æˆåŠŸã€‚ä½†æ˜¯åŒºåˆ†åŒæ—¶ä¹Ÿž®±æ„味ç€éš”阂。é¢å‘对象技术最基础的概念在äº?O = C(O),
对象的å¤å?Composition)ä»ç„¶æ˜¯å¯¹è±? 然而在‘Šæ¥‘Šå¤æ‚的软äšg生æ€çŽ¯å¢ƒä¸,˜q™ä¸€å›¾æ™¯å®žçŽ°çš„å¯èƒ½æ€§è¢«å¤§å¤§çš„压¾~?
é¢å¯¹å±‚层ž®è£…é€ æˆçš„åÅžæ€å„异的表达方å¼, ä¸åŒæ¥æº, ä¸åŒç›®æ ‡, ä¸åŒ˜q行环境下的信æ¯çš„交互å˜å¾—è¶Šæ¥è¶Šå›°éš¾ã€‚æˆ‘ä»¬é€æ¸ä¸§å¤±äº†æ¦‚念上的简‹zæ€?
也ä“áå¤×ƒº†æ•°å¦ä¸–界ä¸çš„那秽I‰K€ä¸€åˆ‡çš„¾lŸä¸€çš„力é‡? 所谓SOAåQˆSerivce Oriented
Architecture)技术试å›ùN€šè¿‡è¡¥å……更多的环境信æ¯ï¼Œæ”‘Ö¼ƒçжæ€å…³è”ï¼Œæš´éœ²å…ƒçŸ¥è¯†ç‰æ–¹å¼æ¥çªç ´çŽ°æœ‰çš„å›°å¢ƒã€?http://canonical.javaeye.com/blog/33803
˜q™å…¶ä¸ä¸€™å¹å…³é”®çš„æŠ€æœ¯æŠ‰æ‹©æ˜¯åŸÞZºŽæ–‡æœ¬æ ¼å¼˜q›è¡Œä¿¡æ¯è¡¨è¾¾ã€?/p>
在过åŽ?0òq´ä¸Web技术å–得了½Iºå‰çš„æˆåŠŸï¼Œå®ƒé€ å°±äº†äº’è”网˜q™ä¸€ä¸–界上最大的分布å¼é›†æˆåº”用。SOA从柿U程度上说是对这一事实在技术层é¢ä¸Šçš„åæ€ã€‚åŸºäº?
æ–‡æœ¬ä¼ é€’çš„web技术所表现出æ¥çš„开放性,å¯ç†è§£æ€§å’Œå¯è§‚‹¹‹æ€§ï¼Œä¸Žå°é—çš„åQŒéš¾ä»¥ç›´æŽ¥è§£è¯Èš„åQŒå¿…™åÀL‹¥æœ‰å¤§é‡ç›¸å…³çŸ¥è¯†æ‰èƒ½æ£¼‹®æ“作的二进制结构相比,˜q™æœ¬íw«å°±
是é©å‘½æ€§çš„创新。ä¸éœ€è¦ç‰¹ŒDŠçš„工具ž®±å¯ä»¥éžå¸¸è½»æ˜“的察看到网™å늨‹åºçš„输入输出åQŒæ‰€æœ‰äº¤äº’过½E‹éƒ½å¤„åœ¨å®Œå…¨é€æ˜Žçš„æ£€æŸ¥ä¸‹åQŒå„¿U䏿›¾äº‹å…ˆè§„åˆ’çš„æ–‡æœ¬å¤„ç†æ‰‹æ®µéƒ½å¯
以å‚与到web创å¾çš„过½E‹ä¸ã€‚éšç€é€Ÿåº¦åQŒå˜å‚¨ä¸å†æ˜¯æˆ‘们考虑的首è¦é—®é¢˜ï¼Œæ–‡æœ¬åŒ–作ä¸ÞZ¸€¿U技术趋劉K€æ¸å˜å¾—明确èµäh¥ã€‚但是ä“Q何一¿UæŠ€æœ¯æ€æƒ³çš„æˆåŠŸæˆ–å¤ÞpÓ|都ä¸
å¯èƒ½æ˜¯å› 为柿Uå•ä¸€çš„åŽŸå› æ‰€é€ æˆçš„ï¼Œå› æ¤æœ‰å¿…è¦å¯¹æ–‡æœ¬åŒ–的技术äh(hu¨¢n)å€¼åšæ›´åŠ ¾l†è‡´çš„剖æžã€?br />
1.
文本化是一定程度上的去¾l“构化,但是通过˜q™ç§æ–¹å¼æˆ‘们获得了对½E‹åº¾l“æž„çš„æ›´å¼ºçš„æŽ§åˆ¶åŠ›ã€‚æ— è®ºæˆ‘ä»¬æ‰€å…›_¿ƒçš„æ–‡æœ¬ç‰‡æ–层层嵌套在大段文本的哪个部分,我们都å¯
以通过text.indexOf(subStr)æ¥å®žçŽ°å®šä½ï¼Œé€šè¿‡text.replace(oldStr,newStr)å®žçŽ°å˜æ¢ã€‚而在¾l„äšg¾pÈ»Ÿä¸ï¼Œæˆ?
ä»¬åªæœ‰é€šè¿‡æŸç§é¢„定的é历方å¼é€æ¥é€’å½’æ‰æœ‰å¯èƒ½è®‰K—®åˆ°ç»„件内部的¾l„æˆå¯¹è±¡ã€‚如果æŸä¸ªç»„件䏿Œ‰ç…§è§„范实现或者规范举~ºå°‘明确的设定,则这一信æ¯å…Œ™”链桞®†ä¼š
æ–裂。在一些组件系¾lŸä¸åQŒç”šè‡Ïx²¡æœ‰è§„定一¿U统一的é历方å¼ï¼Œåˆ™æˆ‘ä»¬æ ¹æœ¬æ— æ³•å®šä¹‰å‡ºé€šç”¨çš„å¤§èŒƒå›´çš„ç»“æž„å®šä½?å˜æ¢æ‰‹æ®µã€‚å³ä½¿æ˜¯åœ¨è®¾è®¡ç²¾è‰¯çš„¾l„äšg框架ä¸ï¼Œå—é™
制于¾l„äšgçš„å°è£…æ€§è¦æ±‚,我们也ä¸å¯èƒ½è®‰K—®åˆ°å…¨éƒ¨çš„ä¿¡æ¯ã€‚å½“æˆ‘ä»¬ä»¥ç»„ä»¶è®¾è®¡è€…æ„æ–™ä¹‹å¤–的方å¼ä½¿ç”¨˜q™äº›¾l„äšg的时候,ž®×ƒ¼šé‡åˆ°é‡é‡éšœç¢ã€‚å³ä½¿æ‰€éœ€çš„åªæ˜¯å¾®ž®çš„å±€
部调æ•ß_¼Œå› äØ“æ— æ³•è§¦åŠåˆ°éœ€è¦ä¿®æ”¹çš„部分åQŒæˆ‘们也å¯èƒ½è¢«è¿«æ”‘Ö¼ƒæ•´ä¸ª¾l„äšgã€?br />
2.
文本是普适的信é“。儿Uæ“作系¾lŸï¼Œå„ç§½E‹åºè¯è¨€æ‰€å…ähœ‰çš„æœ€åŸºæœ¬çš„能力就是文本处ç†èƒ½åŠ›ï¼Œå¯¹äºŽæ–‡æœ¬æ ¼å¼çš„约定是最å®ÒŽ(gu¨©)˜“è¾¾æˆå…Þp¯†çš„。虽然对于机器而言åQŒç†è§£åŸº
于地å€å®šä½çš„二˜q›åˆ¶æ•°å—å¯èƒ½æ›´åŠ ç›´æŽ¥åQŒä½†æ˜¯æ‰€æœ‰çš„应用½E‹åºéƒ½æ˜¯ç”׃hæ¥è´Ÿè´£ç¼–åˆÓž¼Œè°ƒè¯•åQŒéƒ¨¾|ÔŒ¼Œ¾l´æŠ¤çš„,如果人å¯ä»¥ä¸å€ŸåŠ©ç‰ÒŽ(gu¨©)®Šçš„工具就å¯ä»¥æ˜Žç¡®äº†è§£åˆ°ç³»¾lŸå†…å?
生的˜q‡ç¨‹åQŒåˆ™¾pÈ»Ÿçš„æž„建和¾l´æŠ¤æˆæœ¬ž®×ƒ¼šå¤§å¹…下é™ã€?br />
3.
文本表述形å¼ä¸Šçš„冗余性增å¼ÞZº†¾pÈ»Ÿçš„æ¦‚å¿ëЍ³å®šæ€§å’Œå±€éƒ¨å¯ç†è§£æ€§ã€‚åœ¨äºŒè¿›åˆ¶æ ¼å¼ä¸åQŒç»å¸¸å‡ºçŽ°çš„æ˜¯æ ¹æ®ç›¸å¯¹åœ°å€å®šä½åQŒè¿™è¦æ±‚我们完整ç†è§£æ•´ä¸ªäºŒè¿›åˆ¶ç»“构,æ‰èƒ½
å¤Ÿé€æ¥å®šä½åˆ°å±€éƒ¨æ•°æ®å—ã€‚åŒæ—Óž¼ŒäºŒè¿›åˆ¶æ ¼å¼ä¸ä¹Ÿç»å¸æ€‹É用一些外部的信æ¯åQŒä¾‹å¦‚æŸä¸ªä½¾|®å¤„的数æ®äؓ整型åQŒå 用四个å—节ç‰ã€‚è¿™æ ïL(f¨¥ng)š„ä¿¡æ¯å¯èƒ½åªèƒ½åœ¨æ–‡æ¡£è¯´æ˜Žé‡ŒæŸ?
刎ͼŒè€Œåœ¨æ•°æ®ä½“䏿²¡æœ‰ä»ÖM½•的体玎ͼŒ˜q™é™åˆ¶äº†ç‹¬ç«‹çš„ç†è§£å¯èƒ½æ€§ã€‚与æ¤ç›¸åï¼Œæ–‡æœ¬æ ¼å¼¾l常是自说明å¼çš„åQŒä¾‹å¦‚width:3.5px,
˜q™æé«˜äº†¾pÈ»Ÿçš„å¯ç†è§£æ€§ï¼Œç‰¹åˆ«æ˜¯å±€éƒ¨å¯ç†è§£æ€§ã€‚å³ä½¿æˆ‘们对¾pÈ»Ÿåªå…·æœ‰å¾ˆž®‘的知识åQŒä¸€èˆ¬ä¹Ÿèƒ½æ ¹æ®æ•°æ®å‘¨å›´çš„相关信毘q›è¡Œå±€éƒ¨æ“作。一般很å®ÒŽ(gu¨©)˜“ž®Þpƒ½å¤Ÿå®šä½åˆ°ç‰?
ŒDŠçš„局部数æ®åŒºåQŒå®‰å…¨çš„è·Œ™¿‡ä¼—多未知的或者ä¸è¢«å…³å¿ƒçš„¾l“æž„. ä¸€ä¸ªç¨‹åºæ–°æ‰‹ä¹Ÿå¯ä»¥åœ¨å¾ˆçŸæ—¶é—´å†…é 瀘qžè’™å¸¦çŒœ,
实现xmlæ ¼å¼çš„wordæ–‡äšgä¸çš„ä¹¦ç¾æ›¿æ¢åŠŸèƒ½,è€Œè¦æžæ¸…楚word的二˜q›åˆ¶æ ¼å¼,òq¶ç‹¬ç«‹ç¼–制出æ£ç¡®çš„æ›¿æ¢åŠŸèƒ?昄¡„¶ž®×ƒ¸æ˜¯ä¸€ä¸¤å‘¨çš„工作é‡å¯ä»¥è§£å†³çš„了.
˜q™å…¶ä¸? å¯ç†è§£æ€§çš„差异是å˜åœ¨ç€æ•°é‡¾U§ä¸Šçš„é¿`沟的.
4. xml˜q™ç§åŠç»“æž„åŒ–çš„æ–‡æœ¬æ ¼å¼è§„范的兴è“v, 以通用的方å¼äؓ文本æè¿°å¼•入了基本的形弾U¦æŸ, 实现了结构表辄¡š„å‡ä¸€æ€?
Cè¯è¨€ä¸çš„å®?Macro)本质上就是一¿Uæ–‡æœ¬æ›¿æ¢æŠ€æœ?它的å¨åŠ›åœ¨äºŽæ²¡æœ‰é¢„å®šä¹‰çš„è¯ä¹‰, å› æ¤å¯ä»¥‘…è¶Šå…¶ä»–è¯æ³•æˆåˆ†, ç ´é™¤çŽ°æœ‰è¯æ³•æ— æ³•è·¨è¶Šçš„é™åˆ?
但是它的å±é™©æ€§åœ¨äºŽç¼ºä¹ä¸Žå…¶èƒ½åŠ›ç›¸é€‚åº”çš„åÅžå¼çº¦æ? 难以控制. 而在xmlæ ¼å¼è§„范ä¸? ä¸åŒè¯ä¹‰,
ä¸åŒæŠ½è±¡å±‚é¢çš„节点å¯ä»¥å…±å˜åœ¨åŒä¸€ä¸ªåÅžå¼ä½“¾pÖM¸, å¯ä»¥ç”¨é€šç”¨çš„æ–¹å¼è¿›è¡Œå®šä½?æ ¡éªŒ, 转梽{? Witrixòq›_°åœ¨åЍæ€xmlæ–šw¢å‘展了一¾pÕdˆ—技æœ?
为文本处ç†å¼•入了更多应用相关的规åˆ? 增强了文本æ˜q°çš„æŠ½è±¡èƒ½åŠ›å’Œè¡¨è¾¾èƒ½åŠ?
5. æ–‡æœ¬ä½œäØ“æè¿°(description)è€Œä¸æ˜¯æ‰§è¡ŒæŒ‡ä»?execution). Cè¯è¨€çš„æºä»£ç 与机器ç 基本上是一一对应çš?
åÏxºä»£ç 本èín所表达的就是指令的执行˜q‡ç¨‹. 而在Web应用领域, HTMLè¯è¨€ä»…仅是声明界é¢ä¸Šéœ€è¦å±•çŽîC»€ä¹?
但是如何åŽÕd®žçŽ°æ˜¯ç”±é€šç”¨çš„è§£æžå¼•擎负è´?å®ƒåÆˆä¸æ˜¯æˆ‘们å…Ïx³¨çš„é‡ç‚? æè¿°éœ€è¦ç»“åˆè¯ é‡?解释)æ‰èƒ½å¤Ÿäñ”生实际的˜q行效果,
æ‰èƒ½å¯¹çŽ°å®žçš„ç‰©ç†ä¸–界产生影å“.˜q™åœ¨æŸç§½E‹åº¦ä¸Šå®žé™…上是åšg˜qŸäº†æ‰§è¡Œ˜q‡ç¨‹. 一¿Uæ˜q°å¯ä»¥å¯¹åº”多¿Uè¯ é‡?
ä¾‹å¦‚åŒæ ·çš„元数æ®åœ¨å‰å°å¯ä»¥ç”¨æ¥ç”Ÿæˆç•Œé?在åŽå°å¯ä»¥ç”¨äºŽç”Ÿæˆæ•°æ®åº“, ˜q›è¡Œæ•°æ®æœ‰æ•ˆæ€§æ ¡éªŒç‰. 在特定的应用领域ä¸?执行引擎å¯ä»¥æ˜¯é€šç”¨çš?
å¯ä»¥ç‹¬ç«‹äºŽæ˜q°æœ¬íw«ä¸æ–æ¼”åŒ? å› æ¤ä¸€¿U领域特定的æè¿°,它所承è²çš„å†…å®¹åÆˆä¸æ˜¯å›ºåŒ–çš? 而是å¯ä»¥éšç€æ‰§è¡Œå¼•擎的凾U§ä¸æ–增强的. 例如,
在Witrixòq›_°ä¸? FlowDSL本èín所åšå‡ºçš„æµ½E‹æ˜q°æ˜¯½E›_®šçš?
但是éšç€‹¹ç¨‹å¼•æ“Žä¸æ–改进,䏿–引入新的功能,所有ä‹É用DSLçš„å·²å®žçŽ°çš„åº”ç”¨éƒ½åŒæ¥å¾—到å‡çñ”. http://canonical.javaeye.com/blog/275015
6. Text = Process(Text) ˜q™ä¸ªä¸åŠ¨ç‚¹åœ¨Unix¾pÈ»Ÿä¸å¾—åˆîCº†å……分的应ç”? 多个ž®ç¨‹åºé€šè¿‡½Ž¡é“(Pipe)¾l„åˆåœ¨ä¸€èµ?
å¯ä»¥å®Œæˆç›¸å½“夿‚的功èƒ? ä¸€ä¸ªæ›´åŠ ä¸°å¯Œçš„å¤„ç†æ¨¡åž‹æ˜?XML = Process(XML). 文本æè¿°å¾ˆè‡ªç„¶çš„æ”¯æŒå¤šè¶Ÿå¤„ç†,
它ä‹É得我们å¯ä»¥å……分利用全局知识(åŽç®‹çš„处ç†è¿‡½E‹å¯ä»¥ä‹É用剋ơ处ç†è¿‡½E‹æ”¶é›†çš„全局信æ¯), å¯ä»¥åŒæ—¶æ”¯æŒå¤šä¸ªæŠ½è±¡å±‚é¢(例如DSLçš„ä¸æ–动æ€å±•å¼€).
Witrixòq›_°ä¸çš„¾~–译期è¿è¡ŒæŠ€æœ¯å®žé™…上ž®±å¯¹åº”于如下½Ž€å•è§„åˆ? ¾~–译期è¿è¡Œäñ”生文本输å‡? 对输出文本冋ơ进行编è¯? 通过˜q™ä¸€é€’归模å¼,
å¯ä»¥½Ž€å•的实现动æ€è§£æžä¸Žé™æ€æ˜qîC¹‹é—´çš„òqŒ™¡¡. 模æ¿(Template)技术是å…ähœ‰å…³é”®æ€§ä½œç”¨çš„æ–‡æœ¬ç”ŸæˆæŠ€æœ?
out.write("<div>");out.write(value);out.write("</div>");˜q™ç§
APIæ‹¼æŽ¥æ–¹å¼æ˜„¡„¶ä¸å¦‚<div>${value}</div>˜q™ç§æ¨¡æ¿ç”Ÿæˆæ–¹å¼ç›´è§‚且易于ä‹Éç”?
在Witrixòq›_°çš„tpl模æ¿è¯è¨€ä¸? xml的规范性ä‹É得在多趟¾~–译˜q‡ç¨‹ä¸æˆ‘们一直å¯ä»¥ç»´æŒæŸ¿UåÅžå¼çº¦æ?
7. 䏿˜¯æ‰€æœ‰çš„æƒ…况下都应该使用文本. 普元EOS䏿‰€é¼“å¹çš„XMLæ€Èº¿ä¹‹ç±»çš„æŠ€æœ¯æ˜¯æˆ‘所æžåŠ›å对çš? http://canonical.javaeye.com/blog/33794
]]> 关于代ç 生æˆå’ŒDSL http://www.aygfsteel.com/canonical/archive/2008/11/23/242084.htmlcanonical canonical Sun, 23 Nov 2008 03:57:00 GMT http://www.aygfsteel.com/canonical/archive/2008/11/23/242084.html http://www.aygfsteel.com/canonical/comments/242084.html http://www.aygfsteel.com/canonical/archive/2008/11/23/242084.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/242084.html http://www.aygfsteel.com/canonical/services/trackbacks/242084.html
在应用开å‘ä¸åQŒæœ‰äº›é¢†åŸŸæ˜¯éžå¸¸é€‚åˆäºŽä‹É用代ç ç”ŸæˆæŠ€æœ¯çš„ã€‚ä¾‹å¦‚æ ¹æ®é¢†åŸŸæ¨¡åž‹ç”ŸæˆORM(对象-å…³ç³»æ˜ å°„)æè¿°åQŒæˆ–è€…æ ¹æ®æŽ¥å£æ˜q°ç”Ÿæˆè¿œ½E‹è°ƒç”¨ä»£ç?å˜æ ¹ (Proxy/Stub)½{‰ã€‚å› ä¸ºå®ƒä»¬å®žé™…ä¸Šåªæ˜¯å¯¹åŒä¸€ä¿¡æ¯çš„ä¸åŒæŠ€æœ¯åÅžå¼æˆ–者ä¸åŒæŠ€æœ¯å±‚é¢çš„åŒä¹‰åå¤è€Œå·²ã€‚è¿™¿Uç”Ÿæˆæœ€ç†æƒ³çš„æ–¹å¼æ˜¯åЍæ€è¿›è¡Œï¼Œå¯ä»¥éšæ—¶ä¿æŒæ¨¡åž‹çš„æœ‰æ•ˆæ€§ã€‚RoR(RubyOnRails)框架ä¸ActiveRecord技术便是一个æˆåŠŸçš„èŒƒä¾‹åQŒå®ƒç”šè‡³æä¾›äº†åЍæ€ç”Ÿæˆçš„DAO函数åQŒå‡ž®‘了一¾pÕdˆ—的包装调用过½E‹ã€?br />
代ç ç”Ÿæˆæ›´åŠ æ·±åˆ»çš„åº”ç”¨æ˜¯å®Œæˆé«˜å±‚模型å‘低层模型的转化åQŒè¿™ä¸€˜q‡ç¨‹å¾€å¾€æ˜¯éžòq›_‡¡(non-trivial)的。在Witrixòq›_°ä¸é€šè¿‡ä»£ç ç”Ÿæˆæ¥æ”¯æŒé¢†åŸŸæŠ½è±¡ï¼Œå¯ä»¥ç”¨éžå¸æ€½Žçš„æˆæœ¬è·¨‘Šç»“构障¼„,ž®†è‡ªå®šä¹‰çš„领域模型嵌入到现有的技术体¾pÖM¸ã€‚è¿™å…¶ä¸æˆ‘们的主è¦å·¥ä½œæ˜¯è§£å†³äº†ç”Ÿæˆä»£ç 与手工书写代ç 之间的有效隔¼›ÕdŠåЍæ€èžåˆé—®é¢˜ï¼Œ¼‹®ä¿ä»£ç 生æˆå¯ä»¥åå¤çš„以增é‡çš„æ–¹å¼è¿›è¡Œï¼ŒåŒæ—¶æ”¯æŒæœ€¾l†ç²’度处对生æˆçš„ä»£ç ˜q›è¡Œå®šåˆ¶è°ƒæ•´ã€?br />
举一个简å•的例ååQŒå‡è®„¡Ž°åœ¨éœ€è¦å¼€å‘一个三æ¥å®¡æ‰¹çš„‹¹ç¨‹åQŒæ¯ä¸€æ¥çš„æ“ä½œäººå¯ä»¥å½•å…¥æ„è§ï¼Œå¯ä»¥é€‰æ‹©é€šè¿‡æˆ–者回退åQŒå¯ä»¥é€‰æ‹©ä¸‹ä¸€æ¥æ“作的具体æ“作人,¾pÈ»Ÿè‡ªåŠ¨è®°å½•æ“作旉™—´åQŒæ¯ä¸ªæ“作ähå¯ä»¥æŸ¥çœ‹è‡ªå·±çš„æ“ä½œåŽ†å²ç‰ã€‚虽然在现有技术体¾pÖM¸å®žçް˜q™ä¸€åŠŸèƒ½éœ€è¦ä¸ž®‘代ç ,但是在业务层é¢ä¸Šæè¿°˜q™ä¸€åŠŸèƒ½òq¶ä¸éœ€è¦å¾ˆå¤šæ–‡å—ï¼Œå®žé™…éœ€è¦æä¾›çš„ä¿¡æ¯é‡å¾ˆž®ã€‚显ç„Óž¼Œå»ºç«‹é¢†åŸŸæ¨¡åž‹æ˜¯æ¯”较适åˆçš„åšæ³•,å¯ä»¥å®šä¹‰ä¸€¿UDSL(Domain Specific Language)æ¥æ˜q°è¿™ä¸€æ¨¡åž‹ã€?br />
< flow_cp:SeqFlow >
< step id ="draft" userField ="draferId" dateField ="draftTime" waitStatus ="drafted" />
< step id ="check" userField ="checkerId" dateField ="checkTime" opinionField ="checkOpinion"
waitStatus="sent" />
< step id ="approve" userField ="approverId" dateField ="approveTime"
opinionField="approveOpinion" waitStatus ="checked" passStatus ="approved" />
</ flow_cp:SeqFlow >
以上功能涉åŠåˆ°å¤šä¸ªæ“作场景,实现的时候需è¦è¡¥å……大é‡å…·ä½“ä¿¡æ¯ï¼Œå…¶ä¸å¾ˆå¤§ä¸€éƒ¨åˆ†ä¿¡æ¯æ¥è‡ªäºŽèƒŒæ™¯çŸ¥è¯†ï¼Œä¾‹å¦‚昄¡¤ºæ ·å¼åQŒç•Œé¢å¸ƒå±€åQŒå‰åŽå°é€šä¿¡æ–¹å¼½{‰ã€‚以上模型å¯ä»¥è¿›ä¸€æ¥æŠ½è±¡äØ“å¦‚ä¸‹æ ‡ç¾
< flow_cp:StepFlow3 />
在ä¸åŒåº”用ä¸å¤ç”¨ä»¥ä¸Š‹¹ç¨‹é€»è¾‘的时候å¯èƒ½éœ€è¦å±€éƒ¨ä¿®æ£ï¼Œä¾‹å¦‚
< flow_cp:StepFlow3 >
< step id ="check" userField ="checker" />
</ flow_cp:StepFlow3 >
æ›´åŠ å¤æ‚的情形是DSL本èínæä¾›çš„æŠ½è±¡æ— 法满‘›_…¨éƒ¨éœ€æ±‚,而需è¦åœ¨å±€éƒ¨è¡¥å……更多模型之外的信æ¯åQŒä¾‹å¦‚ç‰©å“æŽ¥æ”¶å•审批通过åŽè‡ªåŠ¨å¯¼å…¥åº“å˜ç‰ã€?br />
在Witrixä¸ï¼Œä»£ç 生æˆä¸æ˜¯ç›´æŽ¥äº§ç”Ÿæœ€¾lˆçš„输出åQŒè€Œæ˜¯åœ¨ç¼–译期生æˆåŸºç¡€æ¨¡åž‹åQŒå®ƒä¸Žè¡¥å……æ˜q°é€šè¿‡extends½Ž—å˜q›è¡Œèžåˆ˜q算之åŽäº§ç”Ÿæœ€¾lˆè¾“å‡? ˜q™ç§èžåˆå¯ä»¥å®žçŽ°åŸºç¡€åŠŸèƒ½çš„æ–°å¢žï¼Œæ›´æ”¹æˆ–è€…åˆ é™¤ã€‚å…¸åž‹çš„è°ƒç”¨å½¢å¼ä¸?br />
< biz-flow >
< extends >
< flow_cp:StepFlow3 >
< step id ="check" userField ="checker" />
</ flow_cp:StepFlow3 >
</ extends >
< action id ="pass_approve" >
.
</ action >
</ biz-flow >
˜q™é‡Œçš„æ“ä½œè¿‡½E‹å¯ä»¥çœ‹ä½œæ˜¯BizFlow extends SeqFlow<FlowConfig extends StepFlow3Config>åQŒä¸Žæ³›åž‹æŠ€æœ¯éžå¸¸ç±»ä¼û|¼Œåªæ˜¯éœ€è¦æ›´å¼ºçš„局部结构控制能力ã€?br />
按照¾U§åˆ—ç†è®ºhttp://canonical.javaeye.com/blog/33824 åQŒæˆ‘们å¯ä»¥å®šä¹‰ä¸€ä¸ªDSLçš„çñ”列,整个抽象˜q‡ç¨‹ä¸?br />
Context0 + DSL1 + EXT0 = DSL0
Context1 + DSL2 + EXT1 = DSL1
在目å‰ä¸€äº›é€šç”¨è¯è¨€ä¸ï¼Œä¹Ÿæœ‰ä¸€äº›æ‰€è°“内嵌DSL的方案,å¯ä»¥æä¾›æ¯”较½Ž€‹z的业务æè¿°ã€‚但是仅仅å¾ç«‹DSLæè¿°æ˜¯ä¸å……分的,从çñ”列ç†è®ºçš„观点看,我们必须æä¾›ä¸€¿UDSL的补充手ŒDµï¼Œèƒ½å¤Ÿåœ¨ç»†èŠ‚å¤„è¡¥å……DSL模型之外的信æ¯ï¼Œå®žçŽ°ä¸¤è€…çš„è‡ªç„¶èžåˆã€‚åŒæ—¶æˆ‘们应该å¯ä»¥åœ¨ä¸åŒçš„æŠ½è±¡å±‚é¢ä¸Šç‹¬ç«‹çš„进行æ“作,例如åœ?DSL1å’ŒDSL2的层é¢ä¸Šéƒ½å¯ä»¥é€šè¿‡¾cÖM¼¼¾l§æ‰¿çš„æ“ä½œå®žçŽ°å±€éƒ¨è°ƒæ•ß_¼Œ˜q™åŒæ—¶ä¹ŸåŒ…括在ä¸åŒçš„æŠ½è±¡å±‚é¢ä¸Šéƒ½èƒ½å¯¹æ¨¡åž‹˜q›è¡Œåˆæ³•æ€§æ ¡éªŒã€?br />
]]> AOP on XML Tag http://www.aygfsteel.com/canonical/archive/2008/07/07/212933.htmlcanonical canonical Sun, 06 Jul 2008 16:12:00 GMT http://www.aygfsteel.com/canonical/archive/2008/07/07/212933.html http://www.aygfsteel.com/canonical/comments/212933.html http://www.aygfsteel.com/canonical/archive/2008/07/07/212933.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/212933.html http://www.aygfsteel.com/canonical/services/trackbacks/212933.html http://canonical.javaeye.com/blog/34941 AOP使我们å¯ä»¥é€šè¿‡éžäçR入性的方å¼åЍæ€ä¿®æ”?#8220;ä»ÀL„”å·²ç»æž„å¾å¥½çš„½E‹åºåQŒè€Œä¸éœ€è¦äº‹å‰æœ‰å¤§é‡çš„设计准备。原则上è¯?˜q™ç§æŠ€æœ¯æ€æƒ³æ˜¯å¯ä»¥åœ¨ä»ÖM½•½E‹åºè¯è¨€åŸºç¡€ä¸Šè¿›è¡Œè¡¨è¾„¡š„åQŒåÆˆä¸æ˜¯åªæœ‰java, C#˜q™æ ·çš„é¢å‘对象è¯a€æ‰å…许AOPæ“作. Witrixòq›_°ä¸æ‰€åº”用的部分技术与AOP有些¾cÖM¼¼åQŒåªæ˜¯å¤§é‡çš„¾l“构调整表现为xml生æˆå’Œxmlå˜æ¢åQŒåœ¨å…·ä½“çš„ä‹É用方å¼ä¸Šä¹Ÿæœ‰ä¸€äº›å¾®å¦™çš„差异ã€?a >http://canonical.javaeye.com/blog/126467
相对于通用½E‹åºè¯è¨€åQŒxmlè¯è¨€å…¶å®žæ˜¯AOPæŠ€æœ¯çš„ä¸€ä¸ªæ›´åŠ åˆé€‚的形å¼è½½ä½“ã€?br />
1. xmlæ ¼å¼ç‰ÒŽ(gu¨©)®Šçš„规范性确ä¿äº†åœ¨æœ€¾l†çš„逻辑¾_’度上,½E‹åº¾l“构也是å¯è¯†åˆ«çš„åQŒå¯æ“纵的(在这一点上éžå¸¸¾cÖM¼¼äºŽå‡½æ•°å¼è¯è¨€åQ‰ã€‚而所有的命ä×oå¼è¯a€(imperative language)ä¸ï¼Œå‡½æ•°å†…部的结构都是很éšùN‡‡ç”¨ç»Ÿä¸€æ–¹å¼˜q›è¡Œæè¿°å’Œå®šä½çš„ã€?
< ns1:loop >
< rpt:Row />
</ ns1:loop >
2. xmlèŠ‚ç‚¹çš„åæ ‡å¯ä»¥é‡‡ç”¨xpath或者css选择½W¦ç‰é€šç”¨æ–¹å¼˜q›è¡Œæè¿°åQŒè€Œä¸€èˆ¬ç¨‹åºç»“æž„æ— æ³•è¾¾åˆ°xmlæ ¼å¼˜q™æ ·çš„å‡ä¸€æ€§ï¼Œå…¶ä¸çš„åæ ‡å®šä½æ–¹å¼è¦å¤æ‚得多ã€?br />
3. xml节点上å¯ä»¥å¢žåŠ ä“Qæ„属性,ä¸åŒçš„属性å¯ä»¥å±žäºŽä¸åŒçš„命å½Iºé—´(namespace)åQŒè¿™äº›å±žæ€§å¯ä»¥è¾…助AOPçš„å®šä½æœºåˆ¶ã€‚而一般程åºè¯a€ä¸å¦‚果没有Annotation机制, 则定ä½åªèƒ½ä¾èµ–于函数åå’Œ¾cÕdåQˆå‡½æ•°å‚æ•°åªæœ‰ç±»åž‹æ²¡æœ‰å¿UŽÍ¼‰åQŒè€Œç±»å和函数åéšæ—¶å¯èƒ½å› ä¸ÞZ¸šåŠ¡å˜åŒ–而调æ•ß_¼ˆä¸æ˜¯ä¸“äØ“å®šä½è€Œå˜åœ¨ï¼‰, ç”±æ¤æž„å¾çš„切ç‚ÒŽ(gu¨©)˜q°ç¬¦æ˜¯ä¸½E›_®šçš„ã€?br />
< ui:PageTable pager ="${pager}" cache:timeout ="1000" />
4. xmlèŠ‚ç‚¹çš„å¢žåˆ æ”¹æŸ¥æ˜¾ç„¶è¦æ¯”å—节ç ç”ŸæˆæŠ€æœ¯è¦½Ž€å•和直观得多ã€?br />
AOP技术难以找到应用的一个é‡è¦åŽŸå› åœ¨äºŽå¾ˆå¤šäh机械å¼çš„ž®†å®ƒå®šä½ä¸ÞZ¸€¿Uæ¨ªåˆ‡æŠ€æœ¯ï¼Œè®¤äØ“å®ƒçš„ä»·å€¼å®Œå…¨åœ¨äºŽæŸä¸ªç¡®å®šçš„切é¢å¯ä»¥æ’入到多个ä¸åŒçš„切点åQŒå®žçŽ°ç³»¾lŸçš„æ¨ªå‘分解。而在实际应用ä¸ï¼Œä¸šåС层é¢ä¸Šå¾ˆž®‘å…·æœ‰å¯æŠ½è±¡çš„å›ºå®šçš„å…±åŒæ€§ï¼Œæˆ‘们所˜q«åˆ‡éœ€è¦çš„一般是对已有程åºç»“æž„è¿›è¡ŒåŠ¨æ€æ‰©å±•的一¿U能力。横切是AOP的一¿U特ŒDŠçš„应用åQŒä½†ä¸æ˜¯å®ƒçš„全部。相对于¾l§æ‰¿(inheritance)½{‰ä¾èµ–äºŽæ¦‚å¿µè¯ é‡Šçš„ç»“æž„æ‰©å±•æœºåˆÓž¼ŒAOPæ‰€ä»£è¡¨æ£æ˜¯å¯¹ç¨‹åºç»“构空间进行ä“Qæ„æ“¾U늚„一¿U能力。AOPå¯ä»¥ä¸ºåŸº¼‹€¾l“æž„å¢žåŠ åŠŸèƒ½åQŒæ”¹å˜åŽŸæœ‰åŠŸèƒ½å®žçŽŽÍ¼Œä¹Ÿå¯ä»¥å–消原有功能实玎ͼŒå®ƒä¸éœ€è¦æŠŠæ‰€æœ‰çš„æ‰©å±•逻辑按照æ ?w¨¨i)åÅž¾l“æž„˜q›è¡Œ¾l„织åQŒä¸è¦æ±‚在基¼‹€¾l“æž„ä¸äؓ扩展¾~–写ç‰ÒŽ(gu¨©)®Šçš„代ç 。这¿U自ç”Þqš„¾l“构扩展能力在Witrixòq›_°ä¸è¢«å‘展ä¸?#8220;实现业务代ç 与åã^å°åŸº¼‹€æž¶æž„之间的动æ€èžå?#8221;ã€?br />
在Witrixòq›_°çš„实际应用ä¸åQŒAOP的切点匹é…èƒ½åŠ›åÆˆä¸æ˜¯å分é‡è¦ã€‚一般情况下我们主è¦é€šè¿‡æ•´ä½“¾l“构规划æ¥ç¡®ä¿æŽ§åˆ¶ç‚¹æ„义明确且相寚w›†ä¸ï¼Œå› æ¤ä¸éœ€è¦é¢å¤–通过切点匚w…˜q›è¡Œä¸šåŠ¡åŠŸèƒ½çš„å†¾l„织åQŒä¸éœ€è¦å†‹Æ¡ä»Žæ‚äØ•çš„ç¨‹åºé€»è¾‘ä¸é‡æ–°å‘现特ŒDŠçš„æŽ§åˆ¶ç‚V€‚例如在Witrixòq›_°çš„Jspletæ¡†æž¶ä¸æ‰€æœ‰åŽåîCº‹ä»¶å“应都通过objectNameå’ŒobjectEvent傿•°è§¦å‘åQŒåœ¨è§¦å‘åŽå°äº‹äšgå“应函数之å‰éƒ½ä¼šè°ƒç”¨bizflowæ–‡äšgä¸çš„beforeActionŒDüc€?br />
在bizflowæ–‡äšgä¸ï¼Œaopæ“作是明¼‹®æŒ‡å®šåˆ°å…·ä½“函数的,使用模糊匚w…在一般情况下åªä¼šä½‰K—®é¢˜å˜å¾—ä¸å¿…è¦çš„夿‚化。例如扩展actQuery函数
< action id ="aop-Query-default" >
< source >
é€šè¿‡è‡ªå®šä¹‰æ ‡½{¾æŠ½è±¡å‡ºå¤šä¸ªAction之间的共用代ç ?br />
< app:DoWorkA />
</ source >
</ action >
在Witrixòq›_°ä¸ç»“æž„ç»„è£…ä¸»è¦æ˜¯é€šè¿‡è‡ªå®šä¹‰æ ‡½{‘Öº“å’Œextends½Ž—åæ¥å®žçŽŽÍ¼Œå®ƒä»¬éƒ½ä¾èµ–于xmlæ ¼å¼çš„规范性ã€?br />
1. 通过在custom目录下实现åŒåçš„è‡ªå®šä¹‰æ ‡½{¾ï¼Œå›_¯è¦†ç›–Witrixòq›_°æ‰€æä¾›çš„ç¼ºçœæ ‡½{‘Ö®žçŽŽÍ¼Œ˜q™é‡Œæ‰€ä¾èµ–çš„åÆˆä¸æ˜¯å¤æ‚的匹é…过½E‹ï¼Œè€Œæ˜¯è‡ªç„¶ç›´è§‚çš„æ˜ ž®„过½E‹ã€?a >http://canonical.javaeye.com/blog/196826
2. 所有的xmlé…置文äšg支æŒextendsæ“作åQŒå®ƒå…许定制两个å…ähœ‰ä¸šåŠ¡å«ä¹‰çš„xml节点之间的结构èžåˆè§„则。例å¦?lt;biz-flow extends="docflow">ã€?br />
实际使用ä¸? AOP技术的一个应用难点在于状æ€ç©ºé—´çš„½Ž¡ç†é—®é¢˜ã€‚一般interceptor䏿‰€èƒ½è®¿é—®çš„å˜é‡å±€é™äØ“this指针所æºå¸¦çš„æˆå‘˜å˜é‡ï¼Œä»¥åŠå‡½æ•°è°ƒç”¨æ—¶ä¼ å…¥çš„è°ƒç”¨å‚æ•°ã€‚interceptor很难在状æ€ç©ºé—´ä¸åˆ›å¾æ–°çš„å˜é‡åQŒä¹Ÿå¾ˆéš¾è¯Õd–在其他地æ–ÒŽ(gu¨©)‰€äº§ç”Ÿçš„状æ€å˜é‡ã€‚例如对于如下扩å±?A(arg1); B(arg2); C(arg3); =ã€?Ax(arg1); B(arg2); Cx(arg3); å› äØ“åŽŸæœ‰çš„è°ƒç”¨åºåˆ—䏿²¡æœ‰ä¼ 递é¢å¤–çš„å‚æ•°åQŒå› æ¤Aå’ŒC的扩展函æ•îC¹‹é—´å¾ˆéš‘Ö®žçŽ°å…±äº«å†…éƒ¨å˜é‡x。在TPL模æ¿è¯è¨€ä¸ï¼Œtpl本èínæ˜¯æ— çŠ¶æ€çš„åQŒçжæ€å˜é‡é€šè¿‡å¤–部çš?thisContext对象¾lŸä¸€½Ž¡ç†ã€‚通过˜q™ç§è¡Œäؓ与状æ€çš„分离åQŒç»“åˆçµ‹zÈš„å˜é‡ä½œç”¨åŸŸæŽ§åˆ¶æœºåˆÓž¼Œå¯ä»¥ä»¥æ¯”较简å•的方å¼å®žçŽ°æ‰©å±•å‡½æ•°ä¹‹é—´çš„ä¿¡æ¯å…±äº«ã€?br />
]]> ä¸ÖM»Žåˆ†è§£è€Œä¸æ˜¯æ£äº¤åˆ†è§?/title> http://www.aygfsteel.com/canonical/archive/2008/05/26/202801.htmlcanonical canonical Sun, 25 May 2008 16:41:00 GMT http://www.aygfsteel.com/canonical/archive/2008/05/26/202801.html http://www.aygfsteel.com/canonical/comments/202801.html http://www.aygfsteel.com/canonical/archive/2008/05/26/202801.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/202801.html http://www.aygfsteel.com/canonical/services/trackbacks/202801.html http://canonical.javaeye.com/blog/33885 但是物ç†å¦ä¸å¦ä¸€¿Ué‡è¦çš„分æžå¦æ€æƒ³æ˜¯å¾®æ‰°è®º(Perturbation). é’ˆå¯¹ä¸€ä¸ªå¤æ‚的物ç†çŽ°è±¡åQŒé¦–å…ˆå¾ç«‹ä¸€ä¸ªå…¨å±€çš„规范的模型åQŒç„¶åŽè€ƒè™‘å„ç§å¾®æ‰°æ¡äšg对原有模型的影å“。在ž®æ‰°åŠ¨æƒ…å†µä¸‹åQŒæ¨¡åž‹çš„å˜åŒ–部分往往å¯ä»¥è¢«çº¿æ€§åŒ–åQŒè¢«å±€åŸŸåŒ–åQŒå› 而问题得到简化。微扰分æžå¾—到的解ä¾èµ–于全局模型的解而å˜åœ¨ï¼Œå› 而这是一¿U主从关¾pÈš„分解方å¼ã€‚但是如果主体模型是我们已ç»ç†ŸçŸ¥çš„物ç†çŽ°è±¡ï¼Œåˆ™æˆ‘ä»¬å…³æ³¨çš„é‡ç‚¹å¯ä»¥å…¨éƒ¨æ”‘Öœ¨æ‰°åŠ¨è§£ä¸ŠåQŒè®¤ä¸ºæ‰€æœ‰ç‰¹å®šçš„物ç†è§„律都体现在扰动解ä¸ã€‚如果微扰分æžå¾—到的物ç†å…ƒç´ ‘›_¤Ÿä¸°å¯ŒåQŒåˆ™å¾®æ‰°æ¨¡åž‹æœ¬èínå¯ä»¥æˆäØ“ç‹¬ç«‹çš„ç ”½I¶å¯¹è±¡ï¼Œåœ¨å…¶ä¸æˆ‘ä»¬åŒæ ·å¯ä»¥å‘现柿U普适的¾l“构规律ã€?br />
Witrixòq›_°ä¸ç³»¾lŸåŒ–的应用主从分解模å¼ï¼Œé€šè¿‡¾cÖM¼¼AOP的技术实çŽîCº†ä¸šåŠ¡æ¨¡åž‹ä¸Žåã^å°æŠ€æœ¯çš„è‡ªç„¶¾l“åˆã€?a >http://canonical.javaeye.com/blog/126467 最˜q‘我们的一个äñ”å“的新版本峞®†åœ¨å…¨å›½èŒƒå›´å†…部¾|ÔŒ¼Œå¦‚何有效的控制众多相˜q‘的二次开å‘ç‰ˆæœ¬ï¼ŒåŒæ—¶¼‹®ä¿ä¸È‰ˆæœ¬çš„快速凾U§ï¼Œæ˜¯åœ¨æž¶æž„层é¢å¿…须解决的问题ã€?a >http://canonical.javaeye.com/blog/73265 在Witrixòq›_°ä¸ï¼Œå„部¾|²ç‰ˆæœ¬åÆˆä¸æ˜¯ç›´æŽ¥ä¿®æ”¹ä¸È‰ˆæœ¬æºä»£ç 得到åQŒè€Œæ˜¯ž®†å·®å¼‚åŒ–ä»£ç æ”‘Öœ¨å•独的目录丘q›è¡Œ½Ž¡ç†åQŒç”±¾pÈ»Ÿ˜q行òq›_°è´Ÿè´£ž®†å·®å¼‚化定制代ç ä¸Žä¸»ç‰ˆæœ¬ä»£ç ˜q›è¡ŒåЍæ€èžåˆï¼Œå®žçŽ°éƒ¨çÖv版本的客户化。在˜q™ä¸€˜q‡ç¨‹ä¸ï¼Œ¾pÈ»Ÿæ¨¡åž‹æœ¬èín支æŒé€†å…ƒ¾l“构臛_…³é‡è¦åQŒå¦åˆ™æŸäº›å¤šä½™çš„å…ƒç´ æ— æ³•é€šè¿‡å·®å¼‚æ€§æ˜q°åŽ»é™¤ï¼Œåˆ™å°†å‡ºçŽ°å±€éƒ¨æ¨¡åž‹å¤±æ•ˆçš„æƒ…å†µã€?br />
Witrixòq›_°å®šä¹‰äº†ç‰¹ŒDŠçš„_custom目录åQŒå®ƒçš„内部目录结构与defaultroot目录相åŒåQŒç³»¾lŸåã^åîC¼˜å…ˆä‹É用该目录下文件所æä¾›çš„åŠŸèƒ½å®žçŽ°ã€‚åŒæ—¶å®šä¹‰äº†¾pÈ»Ÿå‚æ•°global.app_idå’Œglobal.default_app_idåQŒå®ƒä»¬åˆ†åˆ«ç”¨æ¥åŒºåˆ†å½“å‰ç¨‹åºç‰ˆæœ¬ä»¥åŠç¨‹åºä¸»ç‰ˆæœ¬ä»£ç 。例如当global.app_id=beijing,global.default_app_id=main的时候,¾pÈ»Ÿä¸è£…è½½ui.xml˜q™ä¸ªæ ‡ç¾åº“æ—¶¾l历如下˜q‡ç¨‹åQ?br />
1. 装è²òq›_°å†…ç½®çš„æ ‡½{‘Öº“åQŒæ–‡ä»¶èµ\径䨓 /_tpl/ui.xml.
2. æ ÒŽ(gu¨©)®global.default_app_id讄¡½®åQŒè£…è½?_custom/main/_tpl/ui.xml, å…¶ä¸å®šä¹‰çš„æ ‡½{‘Ö®žçŽ°å°†è¦†ç›–òq›_°¾~ºçœæä¾›çš„æ ‡½{‘Ö®žçŽ°ã€‚å¯¹äºŽé‚£äº›ä¸éœ€è¦ç‰¹ŒDŠå®šåˆ¶çš„æ ‡ç¾åQŒç‘ô¾lä‹É用åã^å°æä¾›çš„¾~ºçœå®žçްã€?br />
3. æ ÒŽ(gu¨©)®global.app_id讄¡½®åQŒè£…è½?_custom/beijing/_tpl/ui.xml, å…¶ä¸å®šä¹‰çš„æ ‡½{‘Ö®žçŽ°å°†è¦†ç›–äº§å“ä¸È‰ˆæœ¬çš„æ ‡ç¾å®žçްã€?br />
基础òq›_°ä¸å¯¹äºŽä»£ç 动æ€èžåˆå®šä¹‰äº†¾_„¡»†çš„èžåˆç–略,ž®†é€šè¿‡¾~–è¯‘æŠ€æœ¯æ£€æŸ¥æ‰©å±•æ ‡½{„¡š„接å£ä¸Žç¼ºçœå®žçŽ°çš„æŽ¥å£ç›¸å…¼å®¹ï¼Œç”±æ¤¼‹®ä¿ä»£ç 扩展åŽä¸ä¼šç ´å主版本ä¸çš„已有调用代ç ã€?br />
在基¼‹€òq›_°çš„实çŽîC¸åQŒå¾ˆå¤šå®žçŽîC»£ç 都是类ä¼?br />
< df:WhenAllowFinishWf >
< df:FinishWfButton />
</ df:WhenAllowFinishWf >
˜q™æ ·çš„类似废è¯çš„æ ‡ç¾è°ƒç”¨ã€‚但是通过˜q™äº›æ ‡ç¾çš„æ ‡è®ŽÍ¼Œæˆ‘们¼‹®ç«‹äº†ç³»¾lŸçš„逻辑¾l“æž„åQŒæ ‡å®šäº†¾pÈ»Ÿä¸å¯ä»¥è¢«å®‰å…¨æ›¿æ¢çš„逻辑片æ–ã€?
]]> ä¸å®Œå…¨çš„计算 http://www.aygfsteel.com/canonical/archive/2008/03/16/186614.htmlcanonical canonical Sun, 16 Mar 2008 07:04:00 GMT http://www.aygfsteel.com/canonical/archive/2008/03/16/186614.html http://www.aygfsteel.com/canonical/comments/186614.html http://www.aygfsteel.com/canonical/archive/2008/03/16/186614.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/186614.html http://www.aygfsteel.com/canonical/services/trackbacks/186614.html
o.someFunc() o.onEventA();
sub1.someFunc(); ==> sub1.onEventA();
sub2.someFunc(); sub2.onEventB();
如果把对象看作是函数+状æ€çš„集åˆåQŒåˆ™å¯¹è±¡¾l„装的关¾pÕd®žé™…上是函数集åˆä¹‹é—´çš„一¿U组装关¾p…R€‚当具体的事件å‘生的时候,ž®†è§¦å‘对象上¼‹®å®šçš„å“应函敎ͼŒæ¤æ—¶åœ¨å„个层é¢ä¸Šæ‰€å®žé™…å‘生的计½Ž—æ‰èƒ½è¢«¼‹®å®šä¸‹æ¥ã€?br />
]]> WebMVC之å‰ä¸?今生 http://www.aygfsteel.com/canonical/archive/2008/02/18/180551.htmlcanonical canonical Mon, 18 Feb 2008 14:02:00 GMT http://www.aygfsteel.com/canonical/archive/2008/02/18/180551.html http://www.aygfsteel.com/canonical/comments/180551.html http://www.aygfsteel.com/canonical/archive/2008/02/18/180551.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/180551.html http://www.aygfsteel.com/canonical/services/trackbacks/180551.html http://canonical.javaeye.com/blog/33824
1. 外部视角åQšåŽŸå§‹çš„servlet规范æä¾›äº†ä¸€ä¸ªç®€å•çš„é¢å‘IO的程åºå“应模型。一‹Æ¡å‰å°è®¿é—®ç”±ä¸€ä¸ªç‰¹å®šçš„servletè´Ÿè´£å“应åQŒå®ƒä»Žrequestä¸è¯»å–输入æµåQŒåœ¨å…¨å±€sessionä¸ä¿æŒäÍ(f¨´)时状æ€ï¼Œå‘responseä¸å†™å…¥è¾“出æµã€‚在æ¤åŸº¼‹€ä¸Šï¼ŒJSPæä¾›çš„æ¨¡æ¿æ¦‚å¿ëŠ¿»è½¬äº†½E‹åºå’Œè¾“出文本之间的相对åœîC½åQŒç®€åŒ–了文本输出˜q‡ç¨‹ã€‚至æ¤ï¼Œ˜q™ç§æ•´ä½“çš„ç¨‹åºæ¨¡åž‹åŸºæœ¬ä¸Šåªæ˜¯è§„范化了外部¾pÈ»Ÿè®‰K—®WebæœåŠ¡å™¨çš„å“应模型åQŒåƈ没有对åŽå°ç¨‹åºçš„å…·ä½“å®žçŽ°åˆ¶å®šæ˜Žç¡®çš„çº¦æŸæ¡ä»¶ã€‚å› æ¤åœ¨æœ€¾_—野的åŽå°å®žçŽîC¸åQŒè¯»å–傿•ŽÍ¼Œä¸šåС处ç†åQŒç”Ÿæˆé¡µé¢ç‰å¤„ç†æ¥éª¤æ˜¯çº ¾~ 在一èµïL(f¨¥ng)š„åQŒå¾ˆéš„¡†è§£ï¼Œä¹Ÿå¾ˆéšùN‡ç”¨ã€‚æ¯ä¸€ä¸ªåŽå°é¡µé¢éƒ½æ˜¯ä¸€ä¸ªä¸å¯åˆ†æžçš„æ•´ä½“ã€?br />
<%
String paramA = request.getParameter( " paramA " );
ResultSet rsA =
%>
result = <%= rsA.getString( 0 ) %>
String paramB = request.getParamter( " paramB " );
ResultSet rsB =
<%
rsB.close();
rsA.close();
conn.close();
%>
2. 自å‘分离åQšåœ¨å¤æ‚的程åºå®žè·µä¸åQŒæˆ‘们会自å‘的对业务处ç†ä»£ç 和界é¢ä»£ç è¿›è¡Œä¸€å®šç¨‹åº¦çš„åˆ†ç¦»ã€‚å› ä¸ºæˆ‘ä»¬å¯ä»¥ç›´è§‚的感å—到这两ç§ä»£ç çš„ç¨³å®šæ€§åÆˆä¸åŒ¹é…。例如ä¸åŒä¸šåС处ç†è¿‡½E‹äñ”生的¾l“果都å¯ä»¥ç”¨ä¸€ä¸ªhtmlè¡¨æ ¼æ¥å±•玎ͼŒè€ŒåŒä¸€ä¸ªä¸šåС处ç†è¿‡½E‹äñ”生的¾l“æžœ™åµé¢å¯èƒ½¾l常å‘生å˜åŒ–。一般我们們֑于将业务代ç 写在™åµé¢ä¸Šæ–¹åQŒè€Œç•Œé¢ä»£ç 写在页é¢ä¸‹æ–¹ï¼Œòq¶ä‹É用一些原始的分解机制åQŒä¾‹å¦‚include指ä×o。这¿U分¼›ÀL˜¯éšæ„的,¾~ÞZ¹å½¢å¼è¾¹ç•Œçš„ã€‚ä¾‹å¦‚æˆ‘ä»¬æ— æ³•è¡¨è¾¾è¢«åŒ…å«çš„页é¢éœ€è¦å“ªäº›å‚敎ͼŒä¹Ÿéš¾ä»¥é¿å…全局å˜é‡å冲½Hã€‚éœ€è¦æ³¨æ„的是,分层的一般æ„义在于å„个层é¢å¯ä»¥ç‹¬ç«‹å‘展,它的éšå«å‡å®šæ˜¯å„层é¢ä¹‹é—´çš„交互是规范化的åQŒåªä½¿ç”¨¼‹®å®šçš„æ•°æ®ç»“构,按照¼‹®å®šçš„æ–¹å¼è¿›è¡Œäº¤äº’。例如业务层和界é¢å±‚é€šè¿‡æ ‡å‡†çš„List/Map½{‰æ•°æ®ç»“æž„äº¤äº’ï¼Œè€Œä¸æ˜¯ä‹Éç”¨å…·æœ‰æ— é™å¤š¿Uæ ·å¼çš„ç‰ÒŽ(gu¨©)®Šçš„æ•°æ®ç»“æž„ã€?在弱¾cÕdž‹è¯è¨€çŽ¯å¢ƒä¸ï¼Œå®žä½“对象的结构和Map是ç‰ä»ïL(f¨¥ng)š„).
<%
List header =
List dataList =
%>
<% @ include file = " /show_table.jsp " %>
3. 规范分离åQšJSP所æä¾›çš„useBeanå’Œtag机制åQŒå³æ‰€è°“çš„Model1模型åQŒæ˜¯å¯¹ç¨‹åºç»“构分¼›Èš„一¿U规范化。业务代ç å°è£…在java¾cÖM¸åQŒä¸€èˆ¬ä¸šåС函æ•îC¸ŽwebçŽ¯å¢ƒæ— å…³åQŒå³ä¸ä‹É用requestå’Œresponse对象, å…许å•å…ƒ‹¹‹è¯•。tag机制å¯ä»¥çœ‹ä½œæ˜¯å¯¹include指ä×o的增强,是一¿U代ç é‡ç”¨æœºåˆ¶ã€‚tldæè¿°æ˜Žç¡®äº†è°ƒç”¨tagæ—¶çš„¾U¦æŸå…³ç³»ã€‚调用tagæ—‰™œ€è¦å°±åœ°æŒ‡å®šè°ƒç”¨å‚敎ͼŒè€Œinclude™åµé¢æ‰€ä¾èµ–çš„å‚æ•°å¯èƒ½æ˜¯åœ¨æ¤å‰ä“Qæ„地æ–ÒŽ(gu¨©)Œ‡å®šçš„åQŒæ˜¯ä¸ŽåŠŸèƒ½å®žçŽ°åˆ†¼›Èš„。æ¤å¤–tagæ‰€ä½¿ç”¨çš„å‚æ•°å是局部对象上的属性ååQŒä»Žè€Œé¿å…了对全局å˜é‡çš„ä¾èµ–ã€‚å¾ˆé—æ†¾çš„æ˜¯åQŒjsp tag所ž®è£…çš„ä»ç„¶æ˜¯åŽŸå§‹çš„IO模型åQŒå¯¹½E‹åº¾l“æž„¾~ÞZ¹¾_„¡»†çš„定义,在概念层é¢ä¸Šåªæ˜¯å¯ÒŽ(gu¨©)–‡æœ¬ç‰‡ŒD늚„å†åŠ å·¥ï¼Œéš¾ä»¥æ”¯æ’‘å¤æ‚的控件结构。早期jsp tagæ— æ³•åˆ©ç”¨jspæ¨¡æ¿æœ¬èínæ¥æž„é€ ï¼Œæ— æ³•æž„æˆä¸€ä¸ªå±‚层递进的概忉|Š½è±¡æœºåˆÓž¼Œæ›´æ˜¯è®©è¿™¿Uå±å¼Þqš„é‡ç”¨æ¨¡åž‹é›ªä¸ŠåŠ éœœã€‚åœ¨å…¶ä½å´æ— 能谋其政åQŒè¿™ç›´æŽ¥é€ æˆäº†æ•´ä¸ªj2eeå‰å°ç•Œé¢æŠ½è±¡å±‚的概念¾~ºå¤±åQŒä»¥è‡´å¾ˆå¤šähè®¤äØ“ä¸€¿Uå‰å°æ¨¡æ‰K‡ç”¨æœºåˆ¶æ˜¯æ— 用的。在Witrixòq›_°ä¸æ‰€å®šä¹‰çš„tpl模æ¿è¯è¨€åQŒå……分利用了xml的结构特点,¾l“刾~–è¯‘æœŸå˜æ¢æŠ€æœ¯ï¼ŒæˆäØ“Witrixòq›_°ä¸è¿›è¡Œç»“构抽象的基本手段。实际上åQŒxml能够有效表达的è¯ä¹‰æ¯”一般äh所惌™±¡çš„è¦å¤šå¾—多ã€?br />
  < jsp:useBean id = " myBiz " class = " " />
<% List dataList = myBiz.process(paramA) %>
< ui:Table data = " <%= dataList %> " />
4. 框架分离åQšåœ¨Model1模型ä¸ï¼Œ™åµé¢ä¸å˜åœ¨ç€å¤§é‡çš„粘¾l“性代ç ,它们负责解æžå‰å°å‚æ•°åQŒè¿›è¡Œç±»åž‹è{æ¢å’Œæ•°æ®æ ¡éªŒåQŒå®šä½ç‰¹å®šçš„业务处熾c»ï¼Œè®„¡½®˜q”回¾l“æžœåQŒæŽ§åˆ‰™¡µé¢èŸ©è½¬ç‰ã€‚一¿U自然的æƒÏx³•æ˜¯å®šä¹‰ä¸€ä¸ªå…¨å±€çš„ç¨‹åºæ¡†æžÓž¼Œå®ƒæ ¹æ®é›†ä¸çš„é…置文äšgå®Œæˆæ‰€æœ‰çš„¾_˜ç»“性æ“作。这也就是所谓é¢å‘actionçš„WebMVC模型。这一模型实现了æœåŠ¡å™¨ç«¯ä¸šåŠ¡å±‚å’Œç•Œé¢å±‚在实çŽîC¸Šçš„分¼›»ï¼Œä½†æ˜¯å¯¹äºŽå¤–部讉K—®è€…而言åQŒå®ƒæ‰€æš´éœ²çš„ä»ç„¶æ˜¯åŽŸå§‹çš„è‡ªåŠ¨æœºæ¨¡åž‹åQšæ•´ä¸ªç½‘ç«™æ˜¯ä¸€ä¸ªåºžå¤§çš„è‡ªåŠ¨æœºï¼Œæ¯æ¬¡è®‰K—®éƒ½è§¦å‘一个actionåQŒåœ¨actionä¸å¯èƒ½æ›´æ”¹è‡ªåŠ¨æœºçš„çŠ¶æ€ï¼ˆä½œäؓ全局状æ€å®¹å™¨çš„session对象或者数æ®åº“åQ‰ã€‚strutsä½œäØ“é¢å‘action框架的先驱,它也很自然的æˆäؓ了先烈。struts䏿‰€å¼•入的FormBean, 链接½Ž¡ç†½{‰æ¦‚念已¾l在实践ä¸è¢«è¯æ˜Žæ˜¯æ— 益的。一些新兴的框架开始回归到通用的Map¾l“æž„åQŒç›´æŽ¥æŒ‡å®šèŸ©è½¬é¡µé¢ï¼Œæˆ–者利用CoC(Convention Over Configuration)¾~ºçœæ˜ å°„.
public class RegisterAction extends Action {
public ActionForward perform (ActionMapping mapping,
ActionForm form,
HttpServletRequest req,
HttpServletResponse res)
{
RegisterForm rf = (RegisterForm) form;
return mapping.findForward( " success " );
}
5. 横å‘延展åQšåˆ†å±‚之åŽå¿…然导å‘å„个层é¢çš„独立å‘展åQŒæˆ‘们的视野自然也会扩大到å•个页é¢ä¹‹å¤–,看到一个层é¢ä¸Šæ›´å¤šå…ƒç´ 之间的相互作用.在é¢å‘对象è¯a€å¤§è¡Œå…‰™“的今天,¾l§æ‰¿(inheritance)æ— ç–‘æ˜¯å¤šæ•îCh首先惛_ˆ°çš„程åºç»“构组¾l‡æ‰‹ŒDµï¼ŽåŽå°actionå¯ä»¥å¾ˆè‡ªç„¶çš„利用javaè¯è¨€è‡ªèínçš„ç‘ô承机åˆÓž¼Œé…置文äšgä¸ä¹Ÿå¯ä»¥å®šä¹‰¾cÖM¼¼çš„extends或者parent属性.但是对于å‰å°™åµé¢ä¸€èˆ¬å´å¾ˆå°‘有适用的抽象手ŒDµï¼ŒäºŽæ˜¯ä¾¿æœ‰äºø™‡´åŠ›äºŽå‰å°™åµé¢çš„对象è¯a€åŒ–:首先ž®†å‰å°é¡µé¢é‡‡ç”¨æŸ¿U对象è¯a€è¡¨è¾¾åQŒç„¶åŽå†åˆ©ç”¨å¯¹è±¡è¯è¨€å†…置的结构抽象机åˆÓž¼Žæ”‘Ö¼ƒç•Œé¢çš„å¯æè¿°æ€§ï¼Œž®†å…¶è½¬åŒ–为柿Uæ´»åŠ¨å¯¹è±¡ï¼Œåœ¨æˆ‘çœ‹æ¥æ˜¯ä¸€¿U错误的方å‘åQŽè€ŒJSF(JavaServerFace)规范å´ä¼¼ä¹Žæƒ³åœ¨è¿™ä¸ªæ–¹å‘上‘Šèµ°‘Šè¿œåQŽJSF早期设计ä¸å˜åœ¨çš„一个严é‡é—®é¢˜æ˜¯å»¶ç®‹äº†é¢å‘对象è¯a€ä¸çš„状æ€ä¸Žè¡ŒäØ“¾l‘定的组¾l‡æ–¹å¼ï¼Ž˜q™é€ æˆæ¯æ¬¡è®‰K—®åŽå°™åµé¢éƒ½è¦é‡å¾æ•´ä¸ªComponent Tree, æ— æ³•å®žçŽ°™åµé¢¾l“构的有效缓å˜ï¼Žè€ŒW(xu¨¦)itrixòq›_°ä¸çš„tpl模æ¿è¯è¨€¾~–译出的¾l“æž„æ˜¯æ— çŠ¶æ€çš„åQŒå¯ä»¥åœ¨å¤šä¸ªç”¨æˆ·ä¹‹é—´é‡ç”¨åQ?br />
6. 相关èšåˆåQšå¯¹è±¡åŒ–首先æ„味ç€ç›¸å…³æ€§çš„局域化åQŒå®ƒòq¶ä¸½{‰äh(hu¨¢n)于对象è¯a€åŒ? 当é¢å¯¹ä¸€ä¸ªå¤§çš„集åˆçš„æ—¶å€™ï¼Œæœ€è‡ªç„¶çš„ç®¡ç†æ‰‹ŒDµä¾¿æ˜¯åˆ†¾l„èšåˆï¼šç´§å¯†ç›¸å…³çš„å…ƒç´ è¢«åˆ†é…到åŒä¸€åˆ†ç»„åQŒç›¸å…Ïx€§è¢«å±€åŸŸåŒ–到组内.例如åQŒé’ˆå¯ÒŽ(gu¨©)Ÿä¸ªä¸šåŠ¡å¯¹è±¡çš„å¢žåˆ æ”ÒŽ(gu¨©)Ÿ¥æ“作å¯ä»¥çœ‹ä½œå±žäºŽåŒä¸€åˆ†ç»„. strutsä¸çš„一个最ä½?j¨©ng)_®žè·‰|˜¯ä½¿ç”¨DispatchAction, å®ƒæ ¹æ®ä¸€ä¸ªé¢å¤–çš„å‚æ•°ž®†è°ƒç”¨è¯·æ±‚æ˜ ž®„到Action对象的å函数上.例如/book.do?dispatchMethod=add. 从外部看æ¥ï¼Œ˜q™ç§è®‰K—®æ–¹å¼å·²ç»‘…越了原始的servletå“应模型åQŒçœ‹èµäh¥é¢‡æœ‰ä¸€äº›é¢å‘å¯¹è±¡çš„æ ·ååQŒä½†ä¹Ÿä»…ä»…å±€é™äºŽæ ·å而已åQŽDispatchAction在strutsæ¡†æž¶ä¸æ— ç–‘åªæ˜¯ä¸€¿Uæƒå®œä¹‹è®¡ï¼Œå®ƒä¸Žform, navigation½{‰éƒ½æ˜¯ä¸å调的,而且多个å函æ•îC¹‹é—´åƈä¸å…±äº«ä“Q何状æ€å˜é‡ï¼ˆå³ä¸å‘生内部的相互作用)åQŒåÆˆä¸æ˜¯çœŸæ£å¯¹è±¡åŒ–çš„¾l„织方å¼åQŽæŒ‰ç…§ç»“构主义的观点åQŒæ•´ä½“大于部分之和.当一¾l„函数èšé›†åœ¨ä¸€èµïL(f¨¥ng)š„æ—¶å€™ï¼Œå®ƒä»¬æ‰€å‚¬ç”Ÿçš„一个概念便是整体的表å¾åQšthis指针åQŽWitrixòq›_°ä¸çš„Jsplet框架是一个é¢å‘对象的Web框架åQŒå…¶ä¸åŒå±žäºŽä¸€ä¸ªå¯¹è±¡çš„多个Actionå“应函数之间å¯ä»¥å…׃ín局部的状æ€å˜é‡ï¼ˆthisObjåQ‰ï¼Œè€Œä¸ä»…仅是通过全局的session对象æ¥å‘ç”Ÿæ— å·®åˆ«çš„å…¨å±€å…Œ™”åQ?a >http://canonical.javaeye.com/blog/33873 éœ€è¦æ³¨æ„的是,thisObjä¸ä»…ä»…èšé›†äº†åŽå°çš„业务æ“ä½œï¼Œå®ƒåŒæ—¶å®šä¹‰äº†å‰åŽåîC¹‹é—´çš„ä¸€ä¸ªæ ‡å‡†çŠ¶æ€å…±äº«æœºåˆÓž¼Œå®žçŽ°äº†å‰åŽå°ä¹‹é—´çš„èšåˆï¼Žè€Œå‰å°çš„add.jsp, view.jsp½{‰é¡µé¢ä¹Ÿå› æ¤é€šè¿‡thisObj产生了状æ€å…³è”,构戙åµé¢åˆ†ç»„åQŽäØ“äº†æ›´åŠ æ˜Ž¼‹®çš„æ”¯æŒå‰å°™åµé¢åˆ†ç»„的概念,W(xu¨¦)itrixòq›_°æä¾›äº†å…¶ä»–ä¸€äº›è¾…åŠ©å…³è”æ‰‹ŒDµï¼Žä¾‹å¦‚æ ‡å‡†™åµé¢ä¸çš„æŒ‰é’®æ“作都集ä¸åœ¨std.jsä¸çš„stdPageå¯¹è±¡ä¸Šï¼Œå› æ¤åªéœ€è¦ä¸€æ¡è¯å¥stdPage.mixin(DocflowOps);å›_¯ä¸ºdocflow定制多个™åµé¢ä¸Šçš„众多相关按钮æ“作åQŽæ¤å¤–Witrixòq›_°ä¸å®šä¹‰äº†æ ‡å‡†çš„urlæž„å¾æ‰‹æ®µåQŒå®ƒ¼‹®ä¿åœ¨å¤šä¸ªé¡µé¢é—´è·Œ™{的时候,所有以$å—符为剾~€çš„傿•°å°†è¢«è‡ªåЍæºå¸¦ï¼Žä»Žæ¦‚念上说这是一¿Uç±»ä¼égºŽcookieåQŒä½†å´æ›´åŠ çµ‹z»ï¼Œæ›´åŠ é¢å‘应用的状æ€ä¿æŒæœºåˆÓž¼Ž
   class DaoWebAction extends WebContext{
IEntityDao entityDao;
String metaName;
public Object actQuery(){
thisObj.put( " pager " ,pager);
return success();
}
public Object actExport(){
Pager pager = (Pager)thisObj.get( " pager " );
return success();
}
}
7. æè¿°åˆ†ç¦»åQšå½“明确定义了Action所èšé›†è€Œæˆçš„对象结构之åŽï¼Œæˆ‘们冿¬¡å›žåˆ°é—®é¢˜çš„原点:如何½Ž€åŒ–程åºåŸºå…ƒï¼ˆå¯¹è±¡åQ‰çš„æž„å¾åQŸç‘ô承始¾lˆæ˜¯ä¸€¿Uå¯è¡Œçš„æ‰‹æ®µåQŒä½†æ˜¯å®ƒè¦æ±‚ä¿¡æ¯çš„组¾l‡ç»“构是递进å¼çš„åQŒè€Œå¾ˆå¤šæ—¶å€™æˆ‘们实际希望的¾l„织方å¼åªæ˜¯½Ž€å•çš„åŠ å’Œã€‚é€šè¿‡æ˜Žç¡®å®šä¹‰çš„meta(元数æ?åQŒä»Žå¯¹è±¡ä¸åˆ†¼›Õd‡ºéƒ¨åˆ†æè¿°ä¿¡æ¯åQŒåœ¨å®žè·µä¸è¢«è¯æ˜Žæ˜¯ä¸€¿Uæœ‰æ•ˆçš„æ‰‹æ®µã€‚åŒæ ïL(f¨¥ng)š„åŽå°äº‹äšgå“应对象(ActionObject)åQŒåŒæ ïL(f¨¥ng)š„å‰å°ç•Œé¢æ˜„¡¤ºä»£ç (PageGroup)åQŒé…åˆä¸åŒçš„MetaåQŒå¯ä»¥äñ”生完全ä¸åŒçš„è¡ŒäØ“¾l“æžœ, 表达ä¸åŒçš„业务需求ã€?a >http://canonical.javaeye.com/blog/114066 从概念上è¯ß_¼Œ˜q™å¯ä»¥çœ‹ä½œæ˜¯ä¸€¿U模æ¿åŒ–˜q‡ç¨‹æˆ–者是一¿U夿‚çš„½{–ç•¥æ¨¡å¼ ProductWebObject = DaoWebObject<ProductMeta>。当焉™™äºŽæŠ€æœ¯å®žçŽ°çš„åŽŸå› åQŒåœ¨ä¸€èˆ¬æ¡†æž¶å®žçŽîC¸åQŒmetaòq¶ä¸æ˜¯é€šè¿‡æ³›åž‹æŠ€æœ¯å¼•入到Web对象ä¸çš„。目å‰å¸¸è§çš„å¼€å‘实践ä¸åQŒç»å¸¸å¯ä»¥çœ‹è§ç±»ä¼¼BaseAction<T>, BaseManager<T>的基¾c»ï¼Œå®ƒä»¬å¤šåŠä»…ä»…æ˜¯äØ“äº†è‡ªåŠ¨å®žçŽ°ç±»åž‹æ£€æŸ¥ã€‚å¦‚æžœç»“åˆAnnotation技术,则å¯ä»¥è¶…‘Šç±»åž‹å¡«å……,部分辑ֈ°Meta¾l„åˆçš„æ•ˆæžœã€‚ä‹É用metaçš„å¦å¤–一个副作用在于åQŒmetaæä¾›äº†å„个层é¢ä¹‹é—´æ–°çš„ä¿¡æ¯ä¼ 递手ŒDµï¼Œå®ƒå¯ä»¥ç»´¾pÕd¤šä¸ªå±‚é¢ä¹‹é—´çš„å…±å˜(covariant)。例如在使用meta的情况下åQŒåŽåîC»£ç 调用requestVars(dsMeta.getUpdatableFields())得到æäº¤å‚æ•°åQŒå‰å°é¡µé¢è°ƒç”¨forEach dsMeta.getViewableFields()æ¥ç”Ÿæˆç•Œé? 则新增一个嗌D늚„时候,åªéœ€è¦åœ¨metaä¸ä¿®æ”¹ä¸€å¤„,å‰åŽå°å³å¯å®žçŽ°åŒæ¥æ›´æ–ŽÍ¼Œè‡ªåЍ¾l´æŒå‰åŽå°æ¦‚å¿ëŠš„一致性。有‘£çš„æ˜¯ï¼Œå‰åŽå°åœ¨åˆ†ç¦»ä¹‹åŽå®ƒä»¬ä¹‹é—´çš„å…³è”å˜å¾—æ›´åŠ ä¸°å¯Œã€?br />
8. 切é¢åˆ†ç¦»: Meta一般用于引入外部的æè¿°ä¿¡æ¯åQŒå¾ˆž®‘直接改å˜å¯¹è±¡çš„è¡ŒäØ“¾l“构。AOP(Aspect Oriented Programming)概念的出çŽîCØ“½E‹åº¾l“构的组¾l‡æä¾›äº†æ–°çš„æŠ€æœ¯æ‰‹ŒDüc€‚AOPå¯ä»¥çœ‹ä½œæ˜¯ç¨‹åºç»“构空间ä¸å®šä½æŠ€æœ¯å’Œ¾l„装技术的¾l“åˆåQŒå®ƒæ¯”ç‘ôæ‰¿æœºåˆ¶å’Œæ¨¡æ¿æœºåˆ¶æ›´åŠ ç‰|´»åQŒä¹Ÿæ›´åŠ å¼ºå¤§ã€?a >http://canonical.javaeye.com/blog/34941 Witrixòq›_°ä¸é€šè¿‡¾cÖM¼¼AOPçš„BizFlow技术实现对DaoWebActionå’Œå‰å°ç•Œé¢çš„è¡ŒäØ“æ‰©å±•åQŒå®ƒå¯ä»¥åœ¨ä¸æ‰©å±•DaoWebAction¾cÈš„æƒ…å†µä¸‹ï¼Œå¢žåŠ /ä¿®æ£/å‡å°‘web事äšgå“应函数åQŒå¢žåŠ?ä¿®æ£/å‡å°‘å‰å°ç•Œé¢å±•çŽ°å…ƒç´ ã€‚å½“å‰å°å‘é€çš„$bizId傿•°ä¸åŒçš„æ—¶å€™ï¼Œåº”用到WebObjectä¸Šçš„è¡ŒäØ“åˆ‡ç‰‡ä¹Ÿä¸åŒï¼Œä»Žè€Œå¯ä»¥è‡ªç„¶çš„æ”¯æŒåŒä¸€ä¸šåŠ¡å¯¹è±¡å…ähœ‰å¤šä¸ªä¸åŒåº”ç”¨åœºæ™¯çš„æƒ…å†µï¼ˆä¾‹å¦‚å®¡æ ¸å’Œæ‹ŸåˆÓž¼‰ã€‚在BizFlowä¸å®šä¹‰äº†æ˜Žç¡®çš„实体化˜q‡ç¨‹åQŒå‰å°æäº¤çš„é›†åˆæ“作ž®†è¢«åˆ†è§£ä¸ºé’ˆå¯¹å•个实体的æ“作。例如å‰å°æäº¤objectEvent=Remove&id=1&id=2,ž®†ä¼šè°ƒç”¨ä¸¤æ¬¡<action id="Remove-default">æ“作。注æ„到AOPå®šä½æŠ€æœ¯é¦–å…ˆè¦æ±‚çš„ž®±æ˜¯è‰¯å¥½çš„åæ ‡å®šä¹? 实体化明¼‹®å®šä¹‰äº†å®žä½“æ“作边界åQŒäØ“å®žä½“ç›¸å…³åˆ‡ç‚¹çš„æž„é€ å¥ å®šäº†åŸºç¡€ã€?a >http://canonical.javaeye.com/blog/33784
9. 背景消除åQšåœ¨Witrixòq›_°ä¸? (DaoWebAction + StdPageGroup + Meta + BizFlow)æž„æˆå®Œæ•´çš„ç¨‹åºæ¨¡åž‹ï¼Œå› æ¤ä¸€èˆ¬æƒ…况下òq¶ä¸éœ€è¦ç‘ô承DaoWebAction¾c»ï¼Œä¹Ÿä¸éœ€è¦å¢žåŠ æ–°çš„å‰å°é¡µé¢æ–‡ä»Óž¼Œè€Œåªéœ€è¦åœ¨BizFlowæ–‡äšgä¸å¯¹ä¿®æ£éƒ¨åˆ†˜q›è¡Œæè¿°å›_¯ã€‚在æŸç§½E‹åº¦ä¸ŠDaoWebAction+StdPageGroup所æä¾›çš„CRUD(CreateReadUpdateDelete)模型æˆäØ“äº†é»˜è®¤çš„èƒŒæ™¯çŸ¥è¯†ã€‚å¦‚æžœèƒŒæ™¯ä¿¡æ¯æžž®‘泄æ¼ï¼Œåˆ™æˆ‘们å¯ä»¥åœ¨è¾ƒé«˜æŠ½è±¡å±‚次上进行工作,而ä¸å†ç†ä¼šåŽŸå§‹çš„æž„é€ æœºåˆ¶ã€‚ä¾‹å¦‚åœ¨æ·±åº¦é›†æˆhibernate的情况下åQŒå¾ˆž®‘会有必™åÖM‹É用SQLè¯å¥çš„需求。BizFlow是对实体相关的所有业务æ“作和所有页é¢å±•çŽ°çš„é›†ä¸æè¿°åQŒåœ¨è€ƒè™‘到背景知识的情况下,它定义了一个完整的自给自èƒöçš„ç¨‹åºæ¨¡åž‹ã€‚å½“æˆ‘ä»¬çš„å¾æ¨¡è§†è§’è{¿UÕdˆ°BizFlow模型上时åQŒå¯ä»¥å‘展出新的½E‹åºæž„é€ æ‰‹ŒDüc€‚例如BizFlow之间å¯ä»¥å®šä¹‰¾cÖM¼¼¾l§æ‰¿æœºåˆ¶çš„extends½Ž—ååQŒå¯ä»¥å®šä¹‰å®žä½“状æ€é©±åŠ¨çš„æœ‰é™è‡ªåŠ¨æœºï¼Œå¯ä»¥å®šä¹‰ä¸åŒå®žä½“之间的钩½E½å…³¾p»ï¼ˆå®žä½“Aå‘生å˜åŒ–的时候自动更新实体B上的相关属性)åQŒä¹Ÿå¯ä»¥å®šä¹‰å¯¹Workflow的自然嵌入机制。从表é¢ä¸Šçœ‹åQŒBizFlowä¼ég¹Žå›žå½’åˆîCº†å‰åŽå°å¤§æ‚烩的最åˆåœºæ™¯ï¼ˆç”šè‡³æ›´åР䏥é‡åQŒå®ƒåŒæ—¶æè¿°äº†å¤šä¸ªç›¸å…³é¡µé¢å’Œå¤šä¸ªç›¸å…³æ“作åQ‰ï¼Œä½†æ˜¯åœ¨åˆ†åˆ†åˆåˆçš„æ¨¡åž‹å»ºç«‹˜q‡ç¨‹ä¸ï¼Œå¤§é‡ä¿¡æ¯è¢«åˆ†è§£åˆ°èƒŒæ™¯æ¨¡åž‹ä¸ï¼ŒåŒæ—¶å‘展了儿U高¾U§ç»“构抽象机åˆ? ¼‹®ä¿äº†æˆ‘们注æ„力的关注点始终是有é™çš„å˜åŒ–部分。而紧致的æè¿°æé«˜äº†ä¿¡æ¯å¯†åº¦ï¼Œ½Ž€åŒ–了½E‹åºæž„é€ è¿‡½E‹ã€?a >http://canonical.javaeye.com/blog/126467
< bizflow extends ="docflow" > <!-- 引入docflow模型åQŒåŒ…括一¾pÕdˆ—界é¢ä¿®æ£å’ŒåŽå°æ“作  -->
< biz id ="my" >
< tpls >
< tpl id ="initTpl" >
< script src ="my_ops.js" ></ script >
< script >
stdPage.mixin(MyOps); // 引入多个™åµé¢ä¸Šç›¸å…ÏxŒ‰é’®å¯¹åº”çš„æ“作
</ script >
</ tpl >
</ tpls >
</ biz >
</ bizflow >
]]> 关系模型与ORM http://www.aygfsteel.com/canonical/archive/2008/01/06/173154.htmlcanonical canonical Sun, 06 Jan 2008 11:04:00 GMT http://www.aygfsteel.com/canonical/archive/2008/01/06/173154.html http://www.aygfsteel.com/canonical/comments/173154.html http://www.aygfsteel.com/canonical/archive/2008/01/06/173154.html#Feedback 3 http://www.aygfsteel.com/canonical/comments/commentRss/173154.html http://www.aygfsteel.com/canonical/services/trackbacks/173154.html
通过idåQˆä¼´éšä¸€ä¸ªåŒ¹é…计½Ž—过½E‹ï¼‰æ¥è¿›è¡Œé—´æŽ¥å…³è”对于ä¿è¯æ¨¡åž‹çš„一致性是éžå¸¸å…³é”®çš„。在ORM䏿¢å¤äº†å¯¹è±¡çš„强兌™”å…¶å®žä¼šé€ æˆå¾ˆå¤šæ½œåœ¨çš„夿‚æ€§ã€‚ä¾‹å¦‚äØ“äº†ç»´æŠ¤å¯¹è±¡å±‚é¢ç»“构的一致性,在更新父åå…³¾pÈš„时候,我们需è¦åŒæ—¶è°ƒç”?child.setParent(parent); parent.getChildren().remove(child); 当关è”ç»“æž„æ›´åŠ å¤æ‚的时候,˜q™é‡Œæ‰€éœ€è¦çš„¾l´æŠ¤å·¥ä½œæ˜¯éšä¹‹å¢žåŠ çš„ã€‚ä¸˜q‡ï¼Œåœ¨ORMä¸ï¼Œå¯¹è±¡çš„åÅžæ€æ˜¯æš‚时性的。在ORM的一‹Æ¡sessionçš„æ“作过½E‹ä¸åQŒå¯¹äºŽå¯¹è±¡çжæ€çš„修改å¯ä»¥æ˜¯ä¸ä¸€è‡´çš„。例如我们å¯ä»¥åªè°ƒç”¨child.setParent(parent); 而ä¸éœ€è¦åŒæ—?nbsp; parent.getChilren().remove(child); åªè¦æˆ‘们在椋ơsessionæ“作ä¸ï¼Œä¸éœ€è¦åŒæ—¶ç”¨åˆ°parent.getChildren(). ˜q™ç§å…Œ™”的暂时性对于很多ORM应用æ¥è¯´æ˜¯å¿…ä¸å¯ž®‘çš„ã€?br />
对象模型ä¸å¯ä»¥ç›´æŽ¥è¡¨è¾„¡š„¾l“构关系比关¾pÀL¨¡åž‹è¦ä¸°å¯Œä¸€äº›ï¼Œä¾‹å¦‚¾l§æ‰¿å…³ç³»åQŒmany-to-many, one-to-list½{‰ã€‚ä½†æ˜¯æ‰€æœ‰è¿™äº›éƒ½ä¸æ˜¯çœŸæ£æœ¬è´¨æ€§çš„å·®å¼‚ã€‚æŠ›å¼ƒæ¦‚å¿µè¯ é‡Šï¼ŒåŸºç±»ä¸Žä¼—å¤šæ´¾ç”Ÿç±»ä¹‹é—´çš„å…³¾pÕdŸºæœ¬ä¸Šå¯ä»¥½{‰äh(hu¨¢n)于一¾l„one-to-one关系。而当兌™”对象本èínçš„é‡è¦æ€§å‡¸çŽ°å‡ºæ¥çš„æ—¶å€™ï¼Œå½“æˆ‘ä»¬æ— æ³•æŠŠå®ƒçº¦åŒ–äØ“å¯¹è±¡ä¸Šçš„ä¸€äº›é™„å±žç‰¹æ€§çš„æ—¶å€™ï¼ˆä¾‹å¦‚æ•°ç»„çš„ä¸‹æ ‡ï¼‰åQŒæˆ‘们必然è¦å»ºç«‹ç›¸åº”的关è”对象,而这æ£å¯¹åº”于关系模型ä¸çš„ä¸é—´å…Œ™”表。ä¸é—´å…³è”è¡¨ä¸Šå¢žåŠ é¢å¤–çš„å—æ®µæ˜¯ä¸€ä¸ªè‡ªç„¶çš„æ‰©å±•˜q‡ç¨‹åQŒè€Œå¯¹è±¡æ¨¡åž‹ä¸Šåšè¿™æ ïL(f¨¥ng)š„æ‰©å……往往表现为åÅžæ€ä¸Šçš„é‡å¤§çš„ä¸å…¼å®¹çš„å˜åŒ–åQŒä¾‹å¦‚从getManyToManyEntity() -> getToManyRelation(), ˜q™å®žé™…上æ„味瀘q™é‡Œçš„对象åÅžå¼æ˜¯å¶ç„¶çš„,½Ž€åŒ–çš„ã€?
在原始的关系数æ®åº“模型ä¸åQŒæ‰€æœ‰çš„表之间的åœîC½æ˜¯åã^½{‰çš„åQŒæ‰€æœ‰å—ŒDµä¹‹é—´çš„åœîC½æ˜¯åã^½{‰çš„åQˆä¸»é”®å’Œå¤–键在å‚与数æ®å…³è”时和其他嗌D늚„å¤„ç†æ–¹å¼ä¸€è‡ß_¼‰ã€‚è¿™¿U概念上的å‡ä¸€æ€§å’Œæ™®é性往往被认为是ç†è®ºçš„优¾ŸŽä¹‹å¤„ã€‚ä½†æ˜¯çŽ°å®žä¸–ç•Œæ˜¯å¤æ‚的,å‘展的方å‘å°±æ˜¯é€æ¥è¯†åˆ«å‡ÞZ¸åŒä¹‹å¤„,òq¶æ‰¾å‡ø™‡ªç„¶çš„表达形弞®†è¿™äº›ä¸åŒè¡¨è¾‘Ö‡ºæ¥ã€‚å‡åŒ€çš„å…³¾pÀL¨¡åž‹æ˜¯å¯¹ç§°æ€§æœ€é«˜çš„åQŒæœ€½Ž€åŒ–的模型。在é¢å¯¹ç‰©ç†¾U¦æŸæ—Óž¼Œå®ƒéšå«çš„å‡è®¾æ˜¯é›†åˆä¹‹é—´å¾ˆž®‘å‘生相互作用,å•表åQˆè¡¨å•到数æ®è¡¨ä¹‹é—´çš„æ˜ å°„åQ‰å’Œä¸ÖM»Žè¡¨æ˜¯æœ€òq¿æ³›çš„æƒ…å†üc€‚è¯•ç€æƒŒ™±¡ä¸€ä¸‹å…³¾pÀL¨¡åž‹ï¼Œåœ¨æ€ç»´ä¸ä¸€èˆ¬æˆ‘们åªèƒ½çœ‹åˆîC¸¤ä¸ªæ•°æ®è¡¨åQŒå½“è€ƒè™‘åˆ°å¤šä¸ªè¡¨çš„æ—¶å€™ï¼Œå› äØ“˜q™äº›è¡¨ä¹‹é—´æ²¡æœ‰æ˜Ž¼‹®çš„å¯åŒºåˆ†æ€§ï¼Œå› æ¤å®ƒä»¬çš„æ„è±¡æ˜¯æ¨¡ç³Šçš„ã€‚åªæœ‰æ˜Ž¼‹®æ„识到主键åQŒå¤–键,主表åQŒä»Žè¡¨ï¼Œå—典表,事实表,¾U¬åº¦è¡¨è¿™äº›ä¸åŒçš„æ¦‚念的时候,当对¿U°æ€§å‡ºçŽ°ç ´¾~ºçš„æ—¶å€™ï¼Œæˆ‘们æ€ç»´ä¸çš„æ¨¡åž‹æ‰èƒ½å¤Ÿä¸°å¯ŒåŒ–èµäh¥ã€?br />
关系模型ç†è®ºåº”用到数æ®åº“å…·ä½“åº”ç”¨ä¸æ—¶åQŒåƈä¸éœ€è¦æ»å®ˆå…³¾p»èŒƒå¼æ•™æ¡ï¼Œå®ƒä»¬åªæ˜¯æè¿°äº†æŸ¿Uæžç«¯åŒ–的对唯一性的˜q½æ±‚。é¢å¯¹å…·ä½“应用的时候,ç†è®ºæœ¬èínä¹Ÿåœ¨ä¸æ–丰富化。我òq¶ä¸æŠŠçŽ°å®žåº”ç”¨ä¸å¿…然需è¦å¢žåŠ å†—ä½™å—ŒD늜‹ä½œæ˜¯å…³ç³»ç†è®ºå¤±æ•ˆçš„结果。从关系完全分解åQŒåˆ°å…³ç³»å®Œå…¨ä¸åˆ†è§£ä¹‹é—ß_¼Œæˆ‘们å¯ä»¥å»ºç«‹å¤§é‡çš„æ¨¡åž‹ã€‚å¾ç«‹å†—余嗌D늚„时候,我们å˜åœ¨ç€å¤§é‡å¯èƒ½çš„选择åQŒåˆ°åº•哪一¿U选择是最优的åQŒç†è®ºæ–¹é¢ä»ç„¶å¯ä»¥ç»™æˆ‘们以具体的指导。ç†è®ºåœ¨å„ç§ä¸åŒ¾U¯åŒ–½E‹åº¦çš„å…³¾pÀL¨¡åž‹ä¸éƒ½å¯ä»¥ç»™æˆ‘ä»¬ä»¥ç›´è§‚çš„å»ø™®®ã€‚æ•°æ®ä»“库ç†è®ÞZ¸å»ºç«‹çš„snowflake模å¼å’Œstar模å¼åQŒå¼ºè°ƒäº†é’ˆå¯¹ä¸»é¢˜åŸŸçš„å…许部分冗余的关¾pÕdˆ†è§£ã€‚这里实际上是强调了表之间的ä¸åŒæ€§ã€‚ä¸å†æ˜¯æ‰€æœ‰çš„表都处于åŒä¸€åœîC½ã€‚Fact Tableå’ŒDimension Table之间的区别被识别出æ¥åQŒåƈ被明¼‹®å¤„ç†ã€‚在我看æ¥ï¼Œ˜q™æ˜¯åŽŸå§‹å…³ç³»æ¨¡åž‹çš„ä¸€¿U自然å‘展,它也是关¾pÀL¨¡åž‹ç†è®ºçš„一部分。ç†è®ÞZ¸åº”该是å•一的,而是æä¾›ä¸€ä¸ªæ¨¡åž‹çñ”列,在ä¸åŒçš„夿‚性层‹Æ¡ä¸ŠåQŒæˆ‘们å¯ä»¥æ ¹æ®ç†è®ºçš„æŒ‡å¯¼é€‰æ‹©å…·ä½“的实现模型ã€?br />
关于ORM http://canonical.javaeye.com/blog/111500
关系模型ä¸çš„æ‰€è°“å…³¾pÀL˜¯åœ¨ä‹É用时åˆÀL‰å®šä¹‰çš„,所有å¾ç«‹å…³¾pÈš„æ–¹å¼åœ¨æŸ¿U程度上都是½{‰äh(hu¨¢n)的,也是外在的。而在ORMä¸ä¸»é”®ä¸Žå¤–键之间的关è”被独立出æ¥åQŒæˆä¸ºæ¨¡åž‹å†…¾|®çš„éƒ¨åˆ†ã€‚è¿™åœ¨å¾ˆå¤šæ—¶å€™ç®€åŒ–äº†æ•°æ®æŸ¥è¯¢çš„ç»“æž„æž„é€ è¿‡½E‹ã€?br />
在ORMä¸ä¸»é”®å› 为缓å˜çš„å˜åœ¨è€Œæ˜¾å‡ÞZ¸Žå…¶ä»–å—æ®µçš„区别。ORMçš„ä‹É用ä‹Éå¾—æ•°æ®å˜å‚¨çš„分解½{–ç•¥å¾—åˆ°æ‰©å……ã€‚åÆˆä¸æ˜¯æ‰€æœ‰çš„表的更新频度都是一致的åQŒè€Œä¸”表ä¸çš„æ•°æ®é‡å¤§å°ä¹Ÿä¸åŒã€‚å—典表一般较?y¨u)®ï¼Œè€Œä¸”很少更新åQŒå¯ä»¥å®‰å…¨çš„å¤åˆ¶ã€‚在整个数æ®å˜å‚¨æ¡†æž¶ä¸ï¼ŒORMä½œäØ“ç‹¬ç«‹çš„æŠ€æœ¯å…ƒç´ å‚与数æ®å˜å‚¨è¿‡½E‹ï¼Œé€šè¿‡ä¸»é”®æä¾›¾~“å˜æœåŠ¡åQŒäñ”生了新的数æ®åˆ†å¸ƒæ¨¡åž‹åQŒæä¾›äº†æ–°çš„æ€§èƒ½ä¼˜åŒ–契机ã€?br />
]]> 代ç 之外的结æž?/title> http://www.aygfsteel.com/canonical/archive/2007/12/15/167994.htmlcanonical canonical Sat, 15 Dec 2007 11:46:00 GMT http://www.aygfsteel.com/canonical/archive/2007/12/15/167994.html http://www.aygfsteel.com/canonical/comments/167994.html http://www.aygfsteel.com/canonical/archive/2007/12/15/167994.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/167994.html http://www.aygfsteel.com/canonical/services/trackbacks/167994.html http://canonical.javaeye.com/blog/147424 在这个方å‘上更进一æ¥ï¼Œæˆ‘们注æ„到所有的代ç òq¶ä¸æ˜¯å¤©ç„¶å‡ºçŽ°çš„åQŒè€Œæ˜¯ç”׃h所¾~–åˆ¶çš„ï¼Œå› æ¤ä»£ç 世界内部òq¶ä¸æž„戞®é—的,自èƒöçš„æŸä¸ªä¸–界。代ç ä¸çš„ç»“æž„é—®é¢˜åÆˆä¸æ˜¯ç”׃»£ç 本íw«å®Œå…¨è§£å†³çš„åQŒå³åœ¨ä»£ç 之外ä»ç„¶å˜åœ¨ç€æŠ€æœ¯ä¸Šå¯ç ”½I¶çš„¾l“构问题ã€?br />
我们在编制代ç çš„åŒæ—¶ä¹Ÿåœ¨¾~–制ç€å¤§é‡çš„说明文档。这些文档æ˜qîCº†ä»£ç 片æ–之间的相互关¾p»ï¼Œæè¿°äº†ä»£ç 未æ¥çš„æ‰©å±•æ–¹å‘åQŒæ˜qîCº†ä»£ç 之间的å¯èƒ½çš„交互方å¼åQŒåŒæ—¶ä¹Ÿæè¿°äº†é’ˆå¯¹çŽ°æœ‰ä»£ç 实现的很多具体¾U¦æŸã€‚例如我们在文档ä¸çº¦å®šæŸä¸ªé‡è¦åœ¨10å’?0之间åQŒä½†åœ¨ä»£ç ä¸å´ä¸ä¸€å®šæ˜¾å¼è¿›è¡Œäº†åˆ¤æ–。针对代ç 结构的很多具体¾U¦æŸæ¡äšg和相å…Ïx€§æ˜q°å¯èƒ½åªåœ¨æ–‡æ¡£ä¸ä½“现åQŒåªåœ¨ç¨‹åºå‘˜çš„头脑ä¸å˜åœ¨åQŒè€Œåƈä¸ä¸€å®šå¿ 实的在代ç 结构ä¸å¾—到表达ã€?br />
æˆ‘åœ¨è®¾è®¡é¢†åŸŸåŸºæœ¬æŒæœ‰ä¸€¿U物ç†å®žåœ¨è®ºåQŒå³æŸç§æŠ€æœ¯ç›¸å…³çš„¾U¦æŸåº”该在技术世界ä¸é€šè¿‡æŠ€æœ¯æ‰‹ŒDµå¾—åˆ°è¡¨è¾¾ã€‚åªæ˜¯è¿™é‡Œçš„æŠ€æœ¯æ‰‹ŒDµå´ä¸ä¸€å®šæŒ‡åœ¨åº”用ä¸åŠ ä¸Šç‰¹å®šçš„ä»£ç 实玎ͼŒè™½ç„¶æˆ‘们在代ç 实çŽîC¸æ›´ç›´æŽ¥çš„è¡¨è¾¾è®¾è®¡è¦æ±‚æ— ç–‘æ˜¯éœ€è¦æå€¡çš„ã€‚äØ“äº†åœ¨½E‹åºä¸æœ‰æ•ˆçš„¾l´æŠ¤¾l“构相关性,我们òq¶ä¸ä¸€å®šéœ€è¦æŠ½è±¡å‡ºæ‰€æœ‰å¯èƒ½é‡ç”¨çš„代ç åQŒåƈä¸ä¸€å®šéœ€è¦ç¡®ä¿æŸä¸€æ¦‚念在程åºä¸åªæœ‰¾_„¡¡®çš„唯一的表达。程åºä¸éš¾ä»¥ç›´æŽ¥¾_„¡¡®è¡¨è¾¾çš„弱兌™”åQŒä»ç„¶å¯ä»¥é€šè¿‡å¼€å?设计工具½{‰æŠ€æœ¯æ‰‹ŒDµå¾—到有效的¾l´æŠ¤ã€‚我们需è¦ä¿è¯çš„æ˜¯ä»£ç 世界ä¸çŸ¥è¯†çš„è‡ªæ°æ€§ï¼Œè€Œè‡ªæ°æ€§åƈä¸ç‰äºŽå”¯ä¸€æ€§ã€?a >http://canonical.javaeye.com/blog/33788
在Witrix䏿ˆ‘们采用一¿Uç‰©ç†æ¨¡åž‹é©±åŠ¨çš„å¼€å‘æ–¹å¼ï¼Œhttp://canonical.javaeye.com/blog/29412 ç”±pdm模型出å‘åQŒè‡ªåŠ¨ç”Ÿæˆhibernateçš„hbmæ–‡äšgåQŒjava实体¾c»ï¼Œå…ƒæ•°æ®metaæ–‡äšgåQŒå‰å°Action注册文äšg½{‰ã€‚生æˆçš„é…置文äšg通过syncWithModelæ ‡è®°ä¸Žæ¨¡åž‹ä¿æŒç€½E›_®šçš„å…³è”。所有酾|®æ–‡ä»‰™ƒ½æ”¯æŒæ‰‹å·¥ä¿®æ”¹åQŒå¼€å‘工兯‚¯†åˆ«syncWithModelæ ‡è®°åQŒå½“pdm模型å‘生å˜åŒ–的时候,工具自动ž®†å˜åŒ–ä¿¡æ¯åŒæ¥åˆ°å„个é…置文äšgä¸ã€‚注æ„到˜q™é‡Œòq¶ä¸æ˜¯é‡‡ç”¨ä¸€ä¸ªç»Ÿä¸€çš„å…ƒæ•°æ®æ¨¡åž‹çš„æ–¹å¼ï¼Œå„个é…置文äšg所表达的信æ¯åœ¨ä¸€å®šç¨‹åº¦ä¸Šæ˜¯é‡å¤çš„åQŒä¹Ÿå¯èƒ½æ˜¯ä¸ä¸€è‡´çš„。例如åŽå°æ•°æ®åº“å…许ä¿å˜100个å—节,但是å‰å°meta䏿ˆ‘们å¯èƒ½é…¾|®åªå…许录入20个å—èŠ‚ã€‚æ ¹æ®ä¸åŒåº”用场景的需è¦ï¼Œæˆ‘们å¯ä»¥åœ¨å„个层é¢å¯¹æ¯ä¸ªé…置文äšg˜q›è¡Œç‹¬ç«‹çš„è°ƒèŠ? 当然,在一般情况下òq¶ä¸å˜åœ¨˜q™ç§éœ€è¦ã€‚整个开å‘过½E‹ä¸åQŒä¿¡æ¯è¡¨è¾„¡š„è‡ªæ°æ€§åÆˆä¸æ˜¯åœ¨åº”用程åºä»£ç ä¸å¾—到定义çš?è€Œæ˜¯å› äØ“å¼€å‘å·¥å…ïL(f¨¥ng)š„å˜åœ¨è€Œåœ¨æŠ€æœ¯ä¸Šå¾—到ä¿è¯çš„ã€‚æ”¾æ¾æ¨¡åž‹ä¹‹é—´çš„唯一匚w…è¦æ±‚åQŒæˆ‘们å¯ä»¥å¾—åˆ°æ›´åŠ ä¸°å¯Œï¼Œæ›´åŠ ç‰|´»çš„èÊY件结构。实际上我认为RoR(RubyOnRails)é‡‡ç”¨ç›´æŽ¥æ˜ å°„çš„ActiveRecord的方å¼è™½ç„¶æœ‰æ•ˆä¿è¯äº†¾pÈ»Ÿå˜åЍä¸çŸ¥è¯†çš„一致性,但是如果ä¸å…许在å„个层é¢ä¸Šéƒ½èƒ½å¤Ÿè‡ªç„¶çš„定义柿Uå¼›»ï¼Œå®ƒåœ¨å¤æ‚应用ä¸çš„ä»·å€¼å°±è¦æ‰“上大大的折扣ã€?br />
]]> ¾l“构的独立æ€?/title> http://www.aygfsteel.com/canonical/archive/2007/12/10/166820.htmlcanonical canonical Mon, 10 Dec 2007 15:57:00 GMT http://www.aygfsteel.com/canonical/archive/2007/12/10/166820.html http://www.aygfsteel.com/canonical/comments/166820.html http://www.aygfsteel.com/canonical/archive/2007/12/10/166820.html#Feedback 1 http://www.aygfsteel.com/canonical/comments/commentRss/166820.html http://www.aygfsteel.com/canonical/services/trackbacks/166820.html
那么åQŒæˆ‘ä»¬åˆ°åº•éœ€è¦æž„建哪些概念,æ‰èƒ½å¤Ÿæœ€æ–¹ä¾¿çš„基于这些概念应对万åƒåº”用系¾lŸçš„å¼€å‘å‘¢ã€?˜q™æ˜¯æˆ‘们需è¦åœ¨¾l“æž„½Iºé—´ä½œå‡ºæŽ¢çƒ¦çš„ã€?˜q™é‡Œçš„æ€ç»´æ–¹å‘䏿˜¯æŠŠç³»¾lŸæŽ¨å‘柿U纯¾_¹åŒ–åQŒæŸ¿Uæžè‡´çš„½Ž€å•化åQŒè€Œæ˜¯è®©å®ƒæ›´åŠ ç‰©ç†åŒ–,æç¤ºå‡ºæ›´å¤šçš„层次åQŒæ›´åŠ å…³åˆ‡åœ¨ç‰©ç†¾U¦æŸæƒ…况下如何实现絋zÀL€§çš„æœ€å¤§åŒ–。一¿U概念在物ç†ä¸Šå¦‚æžœè¢«è¯æ˜Žèƒ½å¤Ÿåœ¨å¾ˆå¤šåœºæ™¯ä¸‹æˆäØ“ä¸å˜çš„基元,则它便是有äh(hu¨¢n)值的åQŒæ˜¯å¯ä»¥˜q›è¡Œç‰©ç†è¯ 释的ã€?br />
很多äºÞZ¹ 惯于接å—è¯è¨€å˜åœ¨çš„现实,接å—设计åŽçš„¾l“æžœåQŒä½†æ˜¯ä½œä¸ºç¨‹åºè¯a€è®¾è®¡è€…ï¼Œä»–ä»¬åˆæ˜¯å¦‚何工作的?他们是å¦çœŸçš„æ˜¯ä»Ž¾U¯çÑa的数å¦å…³¾pÀLŽ¨æ¼”å¾—åˆ°æ‰€æœ‰çš„è¯æ³•特å¾åQŒè¿˜æ˜¯ä»–们预先已¾l在心ä¸è®‘Ö®šäº†åº”è¯¥å‡ºçŽ°çš„è¯æ³•特å¾åQŒç„¶åŽåŽ»å¯ÀL‰¾å®ƒçš„æ•°å¦è¡¨è¾¾åQŒåªæ˜¯å€Ÿæ¤æ¸…除æ€ç»´ä¸æ½œåœ¨å˜åœ¨çš„矛盾性呢åQ?br />
è¯è¨€ä¸å˜åœ¨çš„æ‰€æœ‰ç‰¹å¾æ˜¯¾l过全局考虑的,是清除了所有概å¿ëŠš„矛盾冲çªçš„。但是在现实ä¸ï¼Œæˆ‘们å¶ç„¶æž„é€ çš„¾l“æž„å´å¯èƒ½æ˜¯å±€é™äºŽå½“ä¸‹çš„ä¿¡æ¯æž„é€ çš„åQŒå› æ¤å®ƒä»¬ç›¸ä¼šçš„æ—¶å€™ï¼Œå¯èƒ½ä¼šå‡ºçŽîC¸åè°ƒåQŒå¯èƒ½ä¼šå‡ºçް¾l“构障ç¢ã€‚ä¾‹å¦‚åŒæ äh˜¯å…³é—æ“作åQŒæœ‰äº›äh命å为close, å¦ä¸€äº›äh命å为destroy. å¯èƒ½ä¸€ä¸ªå…·æœ‰é¢å¤–傿•ŽÍ¼Œå¦å¤–一个没有。这里å¯èƒ½éœ€è¦ä¸€¿Uadaptor接å£çš„å°è£…,也å¯èƒ½ä‹É用rubyé‚£ç§method-missing的动æ€åˆ¤æ–ã€‚å¯¹äºŽæ›´åŠ é”™¾l¼å¤æ‚çš„¾l“构问题åQŒå…¶è§£å†³æ–ÒŽ(gu¨©)¡ˆž®×ƒ¸æ˜¯é‚£ä¹ˆæ˜¾ç„¶çš„了,但这òq¶ä¸æ„å‘³ç€æˆ‘ä»¬æ— åŠžæ³•å¯æƒŸë€‚究竟设计何¿U结构边界æ‰èƒ½æœ€ž®åŒ–¾l“æž„èžåˆæ—¶æ‰€è¦ä»˜å‡ºçš„代äh(hu¨¢n)呢?¾l“æž„è¢«è¯†åˆ«åÆˆè¡¨å¾å‡ºæ¥ä»¥åŽåQŒæ˜¯å¦å…许它在一定范围内有所å˜åÅžåQŸåœ¨å˜åÅžä¸æˆ‘们需è¦ä¿æŒçš„æ‹“扑ä¸å˜é‡æ˜¯ä»€ä¹ˆï¼Ÿ¾l“构动æ€è°ƒæ•´çš„æ—¶å€™ï¼Œæˆ‘们是å¦éœ€è¦å®šä¹‰è°ƒæ•´çš„物ç†ä»£äh(hu¨¢n)åQŒæ˜¯å¦èƒ½å¤Ÿå®šä¹‰æŸ¿U动力å¦åQ?br />
我所é˜è¿°çš„åªæ˜¯åœ¨è®¡ç®—机ç†è®ÞZ¸ä»Žæ•°å¦è§†è§’å‘物ç†è§†è§’çš„è{æ¢ï¼Œå®ƒä¸æ˜¯å¿…ç„¶ç»™ä½ æä¾›æŸ¿Uè¶…‘Šå½“下的能力åQŒè€Œæ˜¯æä¾›ä¸€¿Uä¸åŒçš„çœ¼å…‰çœ‹å¾…æ‰€æœ‰çš„ä¸€åˆ‡ã€‚è§†è§’å˜æ¢åŽåQŒæˆ‘们å‘çŽîCº†ä¸€äº›æ–°çš„命题,而在原先的视角下在我们的è¯è¯ä½“ç³»ä¸åŽŸæœ¬æ˜¯æ— æ³•è¡¨è¾¾˜q™äº›å‘½é¢˜çš„。串行程åºå‡è®¾äº†åªæœ‰1颗CPU, 而函数å¼è¯è¨€å‡è®¾äº†å¯ä»¥æœ‰æ— é™å¤šä¸ªCPU, ä½ ä¸è§‰å¾—1è‡Ïx— ½I·ä¹‹é—´ç¼ºç‚¹ä»€ä¹ˆå—。我们å¯ä»¥åˆ›é€ 一些东西把1è‡Ïx— ½I·ä¹‹é—´çš„½Iºç™½è¡¥é½åQŒæ¦‚å¿ëŠ©ºé—´æ˜¯˜qžç®‹çš„ã€?br />
]]> 关于抽象性的一些说æ˜?/title> http://www.aygfsteel.com/canonical/archive/2007/12/09/166520.htmlcanonical canonical Sun, 09 Dec 2007 14:25:00 GMT http://www.aygfsteel.com/canonical/archive/2007/12/09/166520.html http://www.aygfsteel.com/canonical/comments/166520.html http://www.aygfsteel.com/canonical/archive/2007/12/09/166520.html#Feedback 5 http://www.aygfsteel.com/canonical/comments/commentRss/166520.html http://www.aygfsteel.com/canonical/services/trackbacks/166520.html 没有人å¦è®¤æŠ½è±¡çš„æ„ä¹‰åQŒä½†æ˜¯æŠ½è±¡æ˜¯å¦å°±æ˜¯æŠ½è±¡åˆ°æ— 穷大,˜q™æ˜¯ä¸ªå¯ä»¥æ˜Ž¼‹®å®šä¹‰çš„问题åQŒä¹Ÿæ˜¯æ•°å¦é¢†åŸŸæ£åœ¨è§£å†³çš„问题。在我们的æ€è€ƒä¸æ²¡æœ‰æ˜Žç¡®å®šä¹‰ä½•处是边界,
没有明确的é™åˆÓž¼Œ˜q™ä¾¿æ˜¯å¯¼å‘æ— ½IïL(f¨¥ng)š„一¿Uæ€ç»´æ–¹å¼åQŒå®ƒå’ŒçŽ°å®žä¸æ˜¯å¦çœŸçš„å…è®¸æ¶ˆè€—æ— é™å¤šçš„资æºï¼Œåˆ›å¾æ— é™å¤šçš„å¯¹è±¡æ— å…³ã€‚å½“æˆ‘ä»¬è®¤äØ“è‡ªå·±æ˜Žç™½äº†ç»ˆæžçš„æ„ä¹‰åQŒæ˜Žç™?
了一¿UæŽ¨å‘æ— ½IïL(f¨¥ng)š„æŠ½è±¡åQŒè¿™òq¶ä¸æ˜¯ç†è§£äº†ä¸–界的全部,我们ä»ç„¶è¦æ˜Žç™½å¦‚ä½•è§£å†³ä¸€äº›æ›´åŠ å°èŒƒå›´åQŒä½†æ˜¯å´åˆæ™®éå‘生的事情ã€?
例如现在我的¾pÈ»Ÿä¸åªéœ€è¦?0个相互ä¾èµ–çš„¾U¿ç¨‹åQŒå¦‚果我们定æÖMº†10˜q™ä¸ªæ•°å—åQŒæ˜¾ç„¶æˆ‘们å¯ä»¥å‘展一¿U这个领域特有的高效的一些算法结构。而抽象到通用è¯è¨€
ä¸çš„æ—¶å€™ï¼Œæ˜„¡„¶æˆ‘们åªèƒ½å‡è®¾¾U¿ç¨‹æ•°æ˜¯ä»ÀL„大,或者是充分大的åQŒè€Œæ— 法充分利ç”?0˜q™ä¸€é¢†åŸŸä¿¡æ¯åQŒå› æ¤åœ¨˜q™ä¸ªæ„义上我说通用è¯è¨€ä¸æ˜¯æœ‰æ•ˆçš„ã€?
说到10˜q™ä¸ª¼‹®å®šçš„æ•°å—,ä¸è¿‡æ˜¯ä¸€¿Uæžç«¯åŒ–的比喅R€‚我常说概念是连¾lçš„åQŒåÆˆä¸æ˜¯éžæ¤å›_½¼çš„ï¼Œå› æ¤òq¶ä¸æ˜¯ä»Žä¸€¿Uæ™®éæƒ…况到一¿U最ç‰ÒŽ(gu¨©)®Šçš„æƒ…况之间ä¸å†æœ‰å…¶ä»–æƒ?
况了。在˜q™ä¸é—´çŽ¯èŠ‚ï¼Œå˜åœ¨ç€éžå¸¸æ·±åˆ»çš„夿‚的物ç†äº‹å®žã€‚但是这些事实å´åˆæ˜¯æŸç§æœ‰é™æ€§å‘我们æç¤ºå‡ºæ¥çš„。(请ä¸è¦æŠŠ˜q™é‡Œçš„æœ‰é™æ€§ç†è§£äØ“½Ž—术ä¸çš„10以内åQ?
现在æ¥ä¸€ä¸ªç†è®ºæŽ¨æ¼”å§åQ?
1. ä»ÖM½•¾pÈ»Ÿéƒ½åœ¨ä¸€å®šçº¦æŸä¸‹˜q行åQŒå³å®ƒä»¬éœ€è¦ç¬¦åˆæŸäº›çº¦æŸæ¡ä»?
2. 通用è¯è¨€æè¿°äº†æŸäº›ç»“构,但是˜q™äº›¾l“构是充分通用的,能够应用到尽å¯èƒ½òq¿æ³›çš„领域的
3. ¾U¿ç¨‹æ•?10˜q™ä¸ª¾U¦æŸ˜q‡ä†¾ç‰ÒŽ(gu¨©)®ŠåQŒæ˜¾ç„‰™€šç”¨è¯è¨€æ˜¯ä¸ä¼šè€ƒè™‘˜q™ä¸ª¾U¦æŸã€‚实际上目å‰åœ¨é€šç”¨è¯è¨€è®¾è®¡ä¸ï¼Œæ— é™èµ„æºå‡å®šåŸºæœ¬éƒ½æ˜¯é»˜è®¤çš„ã€?
4. 我们承认æŸäº›çŽ°å®žçš„çº¦æŸé€šç”¨è¯è¨€æ˜¯ä¸ä¼šè€ƒè™‘çš?
5. 在最ç‰ÒŽ(gu¨©)®Šçš„,明显ä¸ä¼šè€ƒè™‘的约æŸä»¥åŠéžå¸”R€šç”¨åQŒä¸€èˆ¬é€šç”¨è¯è¨€å¿…然考虑的约æŸä¹‹é—ß_¼Œæ˜¯å¦å˜åœ¨ç€æ›´å¤šçš„,éžåã^凡的¾l“æž„å‘?
6. å‡å¦‚10òq´ä»¥å†…我们所有的¼‹¬äšg都åªèƒ½æ”¯æŒ?0ä¸ªå†…æ ¸ï¼Œåœ¨æˆ‘çš„äñ”å“ç ”å‘ä¸å‡å®š10个线½E‹æœ‰é—®é¢˜å—ã€‚éš¾é“æˆ‘在开å‘的时候就ä¸å†éœ€è¦æŠ½è±¡äº†å—。我在其他方é¢ä»ç„¶æ˜¯éœ€è¦å¾ç«‹æŠ½è±¡çš„ã€?
7. n个抽象约æ?1个具体约æŸï¼Œä»¥åŠ nä¸ªæ— é™çº¦æ?1个有é™çº¦æ?ä»ç„¶æ˜¯æœ‰æ•ˆçš„æŠ½è±¡å½¢å¼ã€‚原谅我在这里åˆä½¿ç”¨äº†æœ‰æ•ˆä¸€è¯ï¼Œå®ƒçœŸçš„很隄¡†è§£å—ã€?
8. 䏿˜¯åœ¨æˆ‘们的æ€ç»´ä¸å˜åœ¨ç€å…·ä½“的或者有é™çš„物ç†é‡?ž®±æ„味瀘q™ç§æ€ç»´æ˜¯ä¸æŠ½è±¡çš?
函数å¼è¯a€æˆ–者ä“Q何一¿U其他我们已知的与Turing机ç‰ä»ïL(f¨¥ng)š„è¯è¨€åQŒå®ƒä»¬åœ¨æŸç§æ•°å¦çš„å«ä¹‰ä¸Šè¯´æ˜¯"没有差别çš?。但是在我们的实际ä‹É用过½E‹ä¸åQŒæ˜¾ç„¶æˆ‘们是
能够感å—到它们之间的¾l“构差异的。å¦åˆ™é‚£äº›ä¸æ–呿˜Žæ–°çš„函数å¼è¯è¨€çš„äh的大脑都˜q›æ°´äº†å—åQŸåœ¨å…·ä½“使用ä¸ï¼Œæ€ÀLœ‰äººå好这个è¯a€,有ähå好那个è¯è¨€,
æ€ÀL˜¯æŸç§æƒ…况下应用æŸä¸ªè¯a€ä¼šæ–¹ä¾¿ä¸€äº?å¦ä¸€äº›éº»çƒ¦ä¸€äº›ã€‚éš¾é“在所有函数å¼è¯è¨€ä¸å¼€å‘类似ErLang解决的那些程åºç»“构都是一æ äh–¹ä¾¿çš„å—?
æœ‰äº›äººçš„è®ø™°ƒæ˜¯æ— 论啥都逃ä¸å‡ºå‡½æ•°å¼è¯è¨€çš„æ€æƒ³ã€‚ä½†æ˜¯å‡å¦‚现在é™å®šä½ 必须使用javaè¯è¨€æ¥å¼€å‘商业应用,éšùN“ä½ çÅžå·¥å—åQŸå¦‚æžœä½ ä¸ä‹É用函数å¼è¯è¨€åQŒä½ 所å?
çš„å·¥ä½œå°±ä¸æ˜¯½E‹åºå·¥ä½œäº†ï¼Ÿä½ 所解决的难é“䏿˜¯ç¨‹åºç»“构问题了å—?现在ž®±æ˜¯æœ‰ä¸€ä¸ªç»“构问题è¦è§£å†³, 它是和è¯a€æ— å…³çš? è¯è¨€æä¾›äº†å°±å¯ä»¥ç›´æŽ¥ç”?
è¯è¨€æ²¡æœ‰æä¾›æˆ‘们å¯ä»¥å†™ä»£ç æž„é€? éšùN“除了è¯è¨€ç›´æŽ¥ä½“现的结构之å¤? ½E‹åºæœ¬èínž®±æ— æ³•æž„é€ ä“Q何具有通用价值的¾l“构了å—åQ?/p>
我在说到函数å¼è¯a€çš„æ—¶å€™ï¼ŒåŸºæœ¬çš„æ€åº¦åªæ˜¯è¯´ä¸è¦å¤ªæ²‰è¿·äºŽä¸€¿U特ŒDŠçš„æŠ½è±¡æ–¹å¼åQŒåº”该多看看别的视角。在ä¸åŒçš„æƒ…况下å˜åœ¨ç€åšäº‹æƒ…çš„ä¸åŒçš„æœ€ä¼˜æ–¹å¼ã€‚æ€ç»´ä¸ä¸è¦åªå…许永远åQŒè€Œå®¹ä¸ä¸‹çŽ°åœ¨ã€?
éžæ¤å›_½¼åQŒå¤©ä¸‹å”¯æˆ?是我们æ€ç»´ä¸ç»å¸”R™·å…¥çš„一个误区。现在计½Ž—机领域所谓的ç†è®ºä¸»è¦æ˜¯åŸºäºŽæ•°å¦è§†è§’çš„åQŒæ²¡æœ‰è€ƒè™‘物ç†ä¸–ç•Œå› äØ“æˆ‘ä»¬è§‚å¯Ÿçš„æœ‰é™æ€§ï¼Œå› äØ“èµ„æº
çš„æœ‰é™æ€§æ‰€é€ æˆçš„ç§¿U约æŸï¼Œæ¤å¤–æ•°å¦ä¸ç›®å‰ä¹Ÿæ²¡æœ‰è€ƒè™‘到物ç†ä¸–界真实的å„ç§å¤æ‚性的å˜åœ¨ã€‚在我们惛_ˆ°ä¸€¿U计½Ž—机ç†è®ºçš„æ—¶å€™ï¼Œå›‘Öƒ˜q‡äºŽ½Ž€å•化åQŒè¿™¿U简å•化è¢?
è®¤äØ“æ˜¯ä¼˜¾ŸŽçš„全部。其实我们应该æ€ç»´æ›´åŠ å¼€æ”¾ä¸€äº›ã€?
]]> 关于è¯è¨€æœ‰æ•ˆæ€§çš„一些澄æ¸?/title> http://www.aygfsteel.com/canonical/archive/2007/12/09/166472.htmlcanonical canonical Sun, 09 Dec 2007 09:19:00 GMT http://www.aygfsteel.com/canonical/archive/2007/12/09/166472.html http://www.aygfsteel.com/canonical/comments/166472.html http://www.aygfsteel.com/canonical/archive/2007/12/09/166472.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/166472.html http://www.aygfsteel.com/canonical/services/trackbacks/166472.html
æˆ‘æ‰€è¡¨è¿°çš„è®ºé¢˜åÆˆä¸æ˜¯è¯´ç‰¹å®šçš„领域¾l“æž„æ— æ³•åœ¨æŸä¸ªç‰¹å®šçš„通用è¯è¨€ä¸æœ‰æ•ˆå®žçŽ°ã€‚æˆ‘æƒ›_¾ˆå¤šähå¯ÒŽ(gu¨©)ˆ‘çš„è¯è¯éƒ½æœ‰äº›è¯¯è§£ã€?br />
å¦‚æžœæˆ‘ä»¬è®¤äØ“ä¸€¿U通用è¯è¨€æ˜¯æ¯”较稳定的,则它一般选择åªå†…¾|®ä¸€äº›é€šç”¨çš„ä¸å¸¦æœ‰é¢†åŸŸç‰¹å®šå«ä¹‰çš„æ¦‚å¿? 而缺ä¹é¢†åŸŸçŸ¥è¯?æˆ–è€…è¯´å› äØ“é€šç”¨è¯è¨€æ•…æ„的摒弃领域ä¾èµ? 它在处ç†é¢†åŸŸç›¸å…³çš„é—®é¢˜çš„æ—¶å€™åÆˆä¸æ˜¯æœ‰æ•ˆçš?˜q™ç§æœ‰æ•ˆæ€§ä¸æ˜¯æ•°å¦å«ä¹‰ä¸Šçš?而是å¯ä»¥˜q›è¡Œç‰©ç†åº¦é‡çš?
现在ErLang寚w€šä¿¡é¢†åŸŸå…ähœ‰è‰¯å¥½çš„æ”¯æŒï¼Œä½ å¯ä»¥è¯´å®ƒå¯¹äºŽé€šä¿¡é¢†åŸŸçš„结构是有效的。但是显然在ErLangä¸ç¼–写界é¢å°±ä¸å¦‚é¢å‘对象è¯è¨€å¾—心应手。在ErLangä¸å®žçŽ°ç•Œé¢ç»“构的时候,它对于界é¢ç»“构的表述ž®×ƒ¸æ˜¯é‚£ä¹ˆç¬¦åˆæˆ‘们直观的åQŒå¯¹æˆ‘们的实现过½E‹æ¥è¯´å°±ä¸æ˜¯é‚£ä¹ˆ¾læµŽçš„ã€‚å› æ¤åœ¨ç•Œé¢¾l“构的实çŽîC¸ŠåQŒç›®å‰æˆ‘们å¯ä»¥è¯´ErLang相对于é¢å‘对象è¯a€è€Œè¨€ž®±æ˜¯ä¸é‚£ä¹ˆæœ‰æ•ˆçš„ã€‚ä¹Ÿè®æ€½ 会说ErLangåšXXå‘å±•ä¹‹åŽæ€Žè§å¾—就更差。但是如果å…许引入未æ¥è¿™ä¸€å…ähœ‰æ— é™å¯èƒ½æ€§çš„å› ååQŒæˆ‘ä»¬åŸºæœ¬ä¸Šæ— æ³•é’ˆå¯¹çŽ°å®žçš„æƒ…å†µä½œå‡ºåˆ¤æ–。例如我们目å‰åÆˆæ— æ³•è¯æ˜Žòq¿ä¹‰ç›¸å¯¹è®ºç›¸å¯¹äºŽç‰›é¡¿åЛ妿˜¯æ›´åŠ ç²¾¼‹®çš„åQŒå¦‚æžœå…许在太阳星系ä¸å¢žåŠ è¶Šæ¥è¶Šå¤šçš„éšè”½çš„æ‘„动星体的è¯ã€‚按照库æ©çš„¿U‘å¦é©å‘½è®ºï¼Œæ¯ä¸€ä¸ªç§‘妿—¶ä»£éƒ½å…ähœ‰ç€è‡ªå·±çš„ç§‘å¦èŒƒå¼ï¼Œå®ƒæ€ÀL˜¯å…ähœ‰ç€å……分的自我辩护能力。范å¼çš„æ›´æ–°æ„å‘³ç€æ ¼å¼å¡”的崩溃。回™å‘ÖŽ†åÔŒ¼Œå“¥ç™½ž®¼åˆšæå‡ºæ—¥å¿ƒè¯´çš„æ—¶å€™ï¼Œòq¶ä¸æ˜¯åœ¨è®¡ç®—¾_‘Öº¦åQŒè®¡½Ž—简‹z性上真的˜qœèƒœæ‰˜å‹’密的地心è¯ß_¼Œåªæ˜¯æ—¥å¿ƒè¯´çš„哲å¦éšå–»æ’¼åŠ¨äº†äh心ã€?br />
我说实际上现在的通用è¯è¨€ä¹Ÿæ˜¯æ— 法有效承è²Domain Specific Structureçš?/strong>åQŒè¿™òq¶ä¸æ˜¯æ„指在通用è¯è¨€ä¸æ— æ³•é’ˆå¯¹ç‰¹å®šåº”ç”¨ä½œå‡ºç‰¹å®šæ‰©å±•æ¥æ”¯æŒç‰¹å®šçš„结构,而是说Domain Specific Structure是ä“Qæ„å¤šçš„ï¼Œä½œäØ“é€šç”¨è¯è¨€å®ƒä¸åº”该把越æ¥è¶Šå¤šçš„¾l“构内置在è¯a€ä¸?˜q™ä¸æ˜¯å¾ˆå¤šäh对ruby的希冀å?åQŒè¿™ä¹ˆåšå¯¹å®ƒæ¥è¯´é¦–先是举læµŽçš„ã€‚åŒæ—¶æŸäº›ç‰¹ŒDŠçš„¾l“æž„åœ¨ä¸€å®šçš„åœºæ™¯ä¸‹æ˜¯æœ‰ç”¨çš„ï¼Œä½†æ˜¯æŠŠå®ƒæŠ½è±¡å‡ºæ¥æ‰©å±•到通用领域的时候,会出现有效性的丧失。例如现在我的系¾lŸä¸åªéœ€è¦?0个相互ä¾èµ–çš„¾U¿ç¨‹åQŒå¦‚果我们定æÖMº†10˜q™ä¸ªæ•°å—åQŒæ˜¾ç„¶æˆ‘们å¯ä»¥å‘展一¿U这个领域特有的高效的一些算法结构。而抽象到通用è¯è¨€ä¸çš„æ—¶å€™ï¼Œæ˜„¡„¶æˆ‘们åªèƒ½å‡è®¾¾U¿ç¨‹æ•°æ˜¯ä»ÀL„大,或者是充分大的åQŒè€Œæ— 法充分利ç”?0˜q™ä¸€é¢†åŸŸä¿¡æ¯åQŒå› æ¤åœ¨˜q™ä¸ªæ„义上我说通用è¯è¨€ä¸æ˜¯æœ‰æ•ˆçš„ã€?br />
ä¼ ç»Ÿä¸Šæ•°å¦ä‹É用的一¿U逯D¿‘èŒƒå¼æ˜¯ï¼šå½“n‘‹äºŽæ— 穷大的时候,åå·®‘‹äºŽæ— ç©·ž®ã€‚现在物ç†å¦å¯ÒŽ(gu¨©)•°å¦çš„一¿U常è§è¦æ±‚å´æ˜¯ï¼šå½“né™å®šåœ¨æœ‰é™æ•°é‡èŒƒå›´çš„æ—¶å€™ï¼ˆä¾‹å¦‚10以内åQ‰ï¼Œæˆ‘们如何æ‰èƒ½ž®½é‡å‡å°‘åå·®ã€‚è¿™è¦æ±‚坹尿 ähœ¬æ•°å¦˜q›è¡Œæ·±å…¥çš„ç ”½IÓž¼Œå®ƒæ‰€å…ähœ‰çš„物ç†å†…涵也是ä¸åŒçš„ã€?br />
在物ç†çš„视角下,我们所兛_¿ƒçš„䏿˜¯ä¸–界在¾lˆæžçš„æ„ä¹‰ä¸Šèƒ½å¦åˆ†è§£ä¸ºå‡½æ•°çš„å¤åˆåQŒä¸æ˜¯è¦å¯¼å‘一¿Uå®—æ•™å¼çš„é¡¶½CÆD†œæ‹œï¼Œè€Œæ˜¯å¼ø™°ƒè¦å°Šé‡è‡ªå·±æ‰€ç›´æŽ¥æ„Ÿå—到的åQŒå……åˆ†åˆ©ç”¨æˆ‘ä»¬å› ä¸ºåœ¨˜q™ä¸ªä¸–界上å˜åœ¨è€ŒèŽ·å¾—çš„ç›´è§‚æ„象åQŒå‘掘自å·Þqš„直觉åQŒè¿™æ ähˆ‘们æ‰èƒ½åœ¨æ— é™å¤æ‚的世界上借助有é™çš„ä¿¡æ¯åšå‡ºé€‰æ‹©ã€?br />
]]> 关于通用è¯è¨€èƒ½åŠ›çš„ä¸€äº›æ¾„æ¸?/title> http://www.aygfsteel.com/canonical/archive/2007/12/09/166375.htmlcanonical canonical Sat, 08 Dec 2007 16:16:00 GMT http://www.aygfsteel.com/canonical/archive/2007/12/09/166375.html http://www.aygfsteel.com/canonical/comments/166375.html http://www.aygfsteel.com/canonical/archive/2007/12/09/166375.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/166375.html http://www.aygfsteel.com/canonical/services/trackbacks/166375.html
首先我所è°?#8220;现在的通用è¯è¨€ ”åQŒå®ƒòq¶ä¸æ„指“现在è‡Ïxœªæ¥æ‰€æœ‰é€šç”¨è¯è¨€ä¹‹åˆé›?/strong>”åQŒè€Œæ˜¯æŒ?#8220;ç›®å‰æ£åœ¨è¢«ä‹É用的æŸä¸€¿U通用è¯è¨€ ”åQŒè¿™¿Uå·®åˆ«ä¾¿ä½“çŽ°äº†æˆ‘æ‰€å¼ø™°ƒçš„ä¸åŒçš„价倯D§‚å’Œä¸åŒçš„è§†è§’ã€‚ä¸æ˜¯ä¸€¿U覆盖一切的全称判æ–åQŒè€Œæ˜¯åœ¨ç‰¹å®šç‰©ç†çº¦æŸä¸‹çš„物ç†å®žä½“ã€?br />
çŽ°åœ¨æ— è®ºæˆ‘ä»¬è®¾è®¡ä»€ä¹ˆå¤§åž‹ç³»¾lŸï¼Œä¸€èˆ¬æ€ÀL˜¯è¦ä¼˜å…ˆè€ƒè™‘å¾®å†…æ ¸è®¾è®¡ã€‚ä½†æ˜¯å¾ˆæ˜„¡„¶åQŒå¦‚果我们的¾~–程控制能力æžå¼ºåQˆå¼ºå¤§åˆ°ä¸çŽ°å®žçš„åœ°æ¥åQ‰ï¼Œæˆ‘们å¯ä»¥æŠŠæ‰€æœ‰çš„代ç 实现ä¸ÞZ¸€ä¸ªå¤§çš„æ•´ä½“。一个整体的好处是勿用质疑的åQŒå¦åˆ™Linux Torvaldsž®×ƒ¸ä¼šæœ‰ä¿¡å¿ƒå’ŒTanenbaum PK。但å³ä‹É是Linux, éšç€¾pÈ»Ÿ‘Šæ¥‘Šåºžå¤§ï¼Œåœ¨å†…æ æ€¸ä¹Ÿè¡¥å……äº†å¾ˆå¤šæ¨¡å—½Ž¡ç†½{–略。我òq¶ä¸æŠŠè¿™¿U情å†ëŠœ‹ä½œæ˜¯ä¸€¿U现在技术能力ä¸åˆîC½æ‰€é€ æˆçš„结果,而是把它看作是在现实的物ç†çº¦æŸä¸‹æ‰€ä¿ƒæˆçš„一¿U必然的选择ã€?br />
按照¾cÖM¼¼çš„逻辑åQŒæˆ‘è®¤äØ“åœ¨é€šç”¨è¯è¨€å±‚é¢ä¸åº”该导入越æ¥è¶Šå¤šçš„特å¾åQŒå®žé™…上也ä¸å¯èƒ½æŠŠæ‰€æœ‰å¯èƒ½çš„¾l“构方å¼éƒ½å†…¾|®åœ¨è¯è¨€ä¸ï¼ˆ˜q™ç§ä¸å¯èƒ½ä¸æ˜¯æ•°å¦æ„义上的ä¸å¯èƒ½åQ‰ã€‚è¿™ä¼šç ´å一¿Uè¯a€çš„纯‹z性,使得它æžéš„¡»´æŠ¤å’Œå‘å±•ã€‚äØ“äº†æ‰©å¤§é€šç”¨è¯è¨€çš„æœ‰æ•ˆåº”用范å›ß_¼Œä¸€¿Uæ˜¾ç„¶çš„æ–¹å¼æ˜¯åœ¨è¯è¨€ä¸å®šä¹‰ä¸€äº›æ”¯æŒç»“构冋ơ抽象的机制åQŒé€šè¿‡å¯æ’拔的方å¼å®žçŽ°ä¸Ždomain相关的知识的èžåˆã€‚ruby˜q™æ ·çš„è¯a€æä¾›äº†å¤§é‡çš„元编½E‹æœºåˆ? Witrixòq›_°ä¸tpl模æ¿è¯è¨€ä¹Ÿå‘展了一¾pÕdˆ—¾~–è¯‘æœŸç»“æž„æž„é€ æŠ€æœ? 但是昄¡„¶å®ƒä»¬éƒ½ä¸èƒ½è¯´æ˜¯ç»“构抽象技术的¾lˆæžå½¢æ€? ç›®å‰æˆ‘对所有通用è¯è¨€æ‰€æä¾›çš„结构抽象和¾l“æž„¾l„è£…èƒ½åŠ›éƒ½æ˜¯ä¸æ»¡æ„çš„,å› æ¤åœ¨Witrixä¸å‘展了一些领域特定的¾l“æž„èžåˆæ‰‹æ®µ.例如æ ÒŽ(gu¨©)®"¾l§æ‰¿"å…³ç³»çš„ç»“æž„è¯ é‡?¾l§æ‰¿å¯ä»¥çœ‹ä½œæ˜¯ä¸¤ä¸ªä¸€¾l´é›†åˆä¹‹é—´çš„覆盖关系), 我们扩展了extends的结构æ“作方å¼? 定义了广义的extends½Ž—å. ˜q™äº›ç‰¹å®šçš„结构关¾pÈ›®å‰åœ¨é¢†åŸŸç‰¹å®šçš„BizFlowè¯è¨€ä¸ä½“çŽ? 它们在通用è¯è¨€ä¸æ˜¯éš¾ä»¥æƒŒ™±¡çš? 而把它们攄¡½®åœ¨é€šç”¨çš„è¯a€ä¸ä¹Ÿæ˜¯ä¸åˆé€‚çš„(˜q™ç§å¤æ‚的结构èžåˆæ“作如果ä¸èƒ½ç»“åˆé¢†åŸŸçŸ¥è¯†è¿›è¡Œç›´è§‚çš„ç†è§£, 必将导å‘一¿Uæ€ç»´çš„æØœä¹?. ˜q™å°±æ˜¯æˆ‘所è°?现在的通用è¯è¨€æ— 法有效承è²Domain Specific Structure"çš„å«ä¹? ˜q™ç§è¯´æ³•其实¾cÖM¼¼äº?集åˆè®ºæ˜¯æ— 法包容所有数å¦ç»“构的". 我们在集åˆè®ºä¸åªç ”究最普é的关¾p?而特定的¾l“构在特定的å¦ç§‘ä¸ç ”½I?
关于ErLang的例å? æˆ‘çš„åŽŸæ„æ˜¯ç”¨æ¥è¯´æ˜Žç»“构问题是独立çš?它是和具体è¯a€æ— å…³ çš?å›_ŸºäºŽæ¶ˆæ¯ä¼ 递å‘生数æ®å…³è”çš„‘…è½»é‡çñ”˜q›ç¨‹æ¨¡åž‹˜q™ä¸€¾l“æž„ä¸æ˜¯å’ŒErLangè¯è¨€¾l‘定çš? ä¸ºæ¤æˆ‘特æ„åŠ äº†ä¸€ŒDµè¯´æ˜?"˜q™é‡Œä¸æ˜¯è¦è¯æ˜ŽæŸ¿Uè¯a€ä¸æ— 法æ˜q°è¿™äº›ç»“构,而是说结构是客观å˜åœ¨çš„ï¼Œå®ƒåÆˆä¸æ˜¯è¦åœ¨åŸºç¡€è¯è¨€å±‚é¢å¾—到充分解决çš?. å³ä‹É在è¯a€å±‚颿ˆ‘们òq¶ä¸è§£å†³˜q™ä¸ª¾l“构问题, 它ä»ç„¶å®¢è§‚å˜åœ¨ç€,我们ä»ç„¶å¯ä»¥ç”¨å…¶ä»–的技术手ŒDµåŽ»å®šä¹‰,去解å†? 解决了这个结构问题就必然会带¾l™æˆ‘们äh(hu¨¢n)å€?è€Œæ— è®ºæˆ‘ä»¬ä‹É用何¿U实现è¯a€ .
"ä»€ä¹ˆåŽŸå› ï¼Œä»€ä¹ˆæ ·çš„çº¦æŸæ¡ä»?坯D‡´äº†çŽ°åœ¨çš„é€šç”¨è¯è¨€æ˜¯æ— 法有效承载消æ¯ä¼ 递å‘生数æ®å…³è”çš„‘…è½»é‡çñ”˜q›ç¨‹æ¨¡åž‹". ˜q™ä¸€å‘½é¢˜òq¶ä¸æ˜¯æˆ‘原文ä¸è®ºç‚¹çš„åˆç†æŽ¨è®º.æˆ‘åÆˆä¸æ˜¯è¦è¯´æŸä¸€¿U特定的领域¾l“æž„æ— æ³•åœ¨ä¸€¿U特定的通用è¯è¨€ä¸å¾—到支æŒ?而是说如果我们认ä¸ÞZ¸€¿U通用è¯è¨€æ˜¯æ¯”较稳定的,则它一般选择åªå†…¾|®ä¸€äº›é€šç”¨çš„ä¸å¸¦æœ‰é¢†åŸŸç‰¹å®šå«ä¹‰çš„æ¦‚å¿? 而缺ä¹é¢†åŸŸçŸ¥è¯?æˆ–è€…è¯´å› äØ“é€šç”¨è¯è¨€æ•…æ„的摒弃领域ä¾èµ? 它在处ç†é¢†åŸŸç›¸å…³çš„é—®é¢˜çš„æ—¶å€™åÆˆä¸æ˜¯æœ‰æ•ˆçš?˜q™ç§æœ‰æ•ˆæ€§ä¸æ˜¯æ•°å¦å«ä¹‰ä¸Šçš?而是å¯ä»¥˜q›è¡Œç‰©ç†åº¦é‡çš? çŽ°åœ¨ä¹Ÿæœ‰å¾ˆå¤šäºø™®¤ä¸ºErLangòq¶ä¸æ˜¯çœŸæ£çš„通用è¯è¨€,它是针对通信领域˜q›è¡Œäº†ç‰¹å®šç»“构调整的, 是内¾|®äº†é¢†åŸŸç‰¹å®š¾l“æž„çš? 而目å‰åœ¨ErLang上å¾ç«‹GUI的努力也òq¶ä¸½Ž—是æˆåŠŸ.
åœ¨å‰æ–‡ä¸æˆ‘ä‹D了一个例å试图说æ˜?"在é™å®šçš„物熾U¦æŸä¸‹ï¼Œæˆ‘们的选择范围会大大羃?y¨u)?. "æ¯”å¦‚è¯´æˆ‘çŽ°åœ¨æœ‰æ— ½I·å¤š¿Uæ–¹å¼ä»ŽåŒ—京跑到上æ“våQŒä½†æ˜¯å¦‚æžœé™å®šåªå…许ç”?凿±½æ²¹ï¼Œé‚£ä¹ˆæˆ‘们的选择ž®Þp¿‘乎于0". ˜q™é‡Œòq¶ä¸æ˜¯è¦è¯´æ˜ŽåŠ ä¸Šç‰©ç†¾U¦æŸä¹‹åŽ,我们便没有ä“Q何选择äº?而是说物ç†çº¦æŸå¯¹æ— 穷多的å¯èƒ½æ–¹å¼èµ·äº†é™å®šé€‰æ‹© 的作ç”? 它最¾lˆé€ æˆæˆ‘们在具体的物ç†åœºæ™¯ä¸‹å¯èƒ½åªæœ‰éžå¸¸æœ‰é™çš„选择. 例如现在å…许ç”?00凿±½æ²? 有多ž®‘秘q输方å¼å¯ä»¥æ»¡èƒöæˆ‘ä»¬çš„è¦æ±? 如果å…许1000å‡å‘¢? 但是如果ä¸è€ƒè™‘所有物ç†çº¦æ? 我们是å¦èƒ½å¤Ÿè¯æ˜Žè¯? 飞机和拖拉机的è¿è¾“能力是完全一致的, å› äØ“å®ƒä»¬éƒ½èƒ½ä»ŽåŒ—äº¬å¼€åˆîC¸Š‹¹?
我的观点是结构问题是独立å˜åœ¨çš?它具有自íw«çš„ä»·å€? ç ”ç©¶å®ƒä¹Ÿéœ€è¦å¾ç«‹ç‰¹å®šçš„价倯D§‚. 一个结构å¯ä»¥ä½“çŽîCØ“è¯è¨€ä¸Šçš„æŸç§è¯æ³•特å¾, 也å¯ä»¥é€šè¿‡æ¡†æž¶½{‰å®žçŽ? 或者表çŽîCØ“æŸç§è®¾è®¡æ¨¡å¼,æŸç§¾~–程技å·? 我们在æ€è€ƒç»“æž„é—®é¢˜çš„æ—¶å€™åÆˆä¸æ˜¯ä»Žç‰¹å®šè¯a€çš„æœºåˆ¶å‡ºå‘çš„, 当è¯a€ä¸ç›´æŽ¥æ”¯æŒçš„æ—¶å€™æˆ‘们å¯ä»¥å‘展特定的实现技术支æŒå®ƒ. 在未æ¥çš„æ—¥å里æŸä¸ªç»“æž„å¯èƒ½è¢«è¯æ˜Žå…ähœ‰æ™®é€‚的价å€?å®ƒä¼šè¢«å¸æ”¶åˆ°æŸä¸ªé€šç”¨è¯è¨€ä¸æˆä¸ºæ‰€æœ‰ç¨‹åºçš„æ”¯æ’‘¾l“æž„, 但是更多的结构永˜qœéƒ½ä¸ä¼š˜q›å…¥é€šç”¨è¯è¨€, 而是居留在æŸä¸ªç‰¹å®šçš„领域. 通用è¯è¨€çš„å‘å±•åÆˆä¸æ˜¯å®Œå…¨åŸÞZºŽæŠ½è±¡çš„æ•°å¦åˆ†æžè€Œè¿›è¡Œçš„, 它å¯ä»¥ä»Žæ›´åŠ ä¸°å¯Œçš„ç‰©ç†ä¸–界ä¸å¸å–è¥å…». 当一¿U结构进入通用è¯è¨€çš„æ—¶å€? 它所带æ¥çš„ç»å¯¹ä¸åªæ˜¯ä¸€¾l„æ•°é‡å…³¾p?è€Œæ˜¯åŒæ—¶å¸¦æ¥ä¸€¾pÕdˆ—¾l过实践‹‚€éªŒçš„物ç†è¯ 释.
我所谓的领域òq¶ä¸æ˜¯æŒ‡ä¸šåŠ¡é¢†åŸŸ, 而是¾l“构领域, 一个å¯ä»¥å®šä¹‰ç‰¹å®šç»“构的物ç†åœºæ™¯. 一个特定的¾l“æž„ä»ç„¶å¯ä»¥æ”¯æ’‘ç€ä»ÀL„多的具体应用. 例如CRUDæ“作å¯ä»¥ä½œäØ“æ•°æ®½Ž¡ç†æ¨¡åž‹. BizFlowä½œäØ“ç•Œé¢å’Œå•实体的交互模åž?
函数å¼è¯a€ä¸ºæˆ‘们æä¾›äº†ä¸€¿U具体的技术工å…? 但是在现实的开å‘ä¸, ä¸ÞZº†æœ‰æ•ˆçš„处ç†ç»“构问é¢? 昄¡„¶æˆ‘们需è¦å¤š¿U视角的¾l„åˆ, è€Œä¸æ˜¯æŠŠæ‰€æœ‰å¯æƒŒ™§çš„图景都¾U¯åŒ–为函æ•? æˆ‘ä»¬å¯¹ä¸–ç•Œçš„ä½“éªŒæ˜¯å¤šæ ·åŒ–çš? ˜q™å°±æ˜¯æˆ‘所è°?世界比函数的集åˆè¦å¤æ?çš„å«ä¹?
]]> 对è¯a€ä¸Žç»“构的说明 http://www.aygfsteel.com/canonical/archive/2007/12/08/166187.htmlcanonical canonical Fri, 07 Dec 2007 18:51:00 GMT http://www.aygfsteel.com/canonical/archive/2007/12/08/166187.html http://www.aygfsteel.com/canonical/comments/166187.html http://www.aygfsteel.com/canonical/archive/2007/12/08/166187.html#Feedback 7 http://www.aygfsteel.com/canonical/comments/commentRss/166187.html http://www.aygfsteel.com/canonical/services/trackbacks/166187.html
首先请ä¸è¦è½»æ˜“怀疑我的知识水òqŸë€‚当然如果æ€ÀL— 法èšé›†è“v‘›_¤Ÿçš„æ³¨æ„力æ¥ç†è§£åˆ«äºø™¯è¯ä¸çš„ç»†èŠ‚ï¼Œæˆ‘ä¹Ÿæ— è¯å¯è¯´ã€?br />
容纳他äh的观点就æ„味ç€ä¸è¦æ€Õdœ¨è‡ªå·±çš„è¯è¯ä½“¾pÖM¸è¯•图扑ֈ°å例. 一个ähæ€ÀL˜¯å—é™äºŽä»–的知识范å›ß_¼Œå› æ¤ä»–也¾l常在自å·Þqš„知识范围内篡æ”ÒŽ(gu¨©)›²è§£åˆ«äººçš„æ„è§ã€‚我从未说过 "一个具体的问题是现有的通用è¯è¨€æ— 法æè¿°çš?. 我说的是"现实开å‘䏿‰€éœ€è¦å¤„ç†çš„¾l“构问题òq¶ä¸æ˜¯åœ¨è¯è¨€å±‚é¢å¾—到充分解决 çš?, "现在 的通用è¯è¨€ä¹Ÿæ˜¯æ— 法有效 承è²Domain Specific Structureçš?. è¯äh³¨æ„我对定è¯å’ŒåЍè¯çš„选择。其实我已ç»ä¸¾äº†å¤§é‡çš„例忥˜q›è¡Œè¯´æ˜ŽåQŒä½†å¯èƒ½å› äØ“å¤§å¤šæ•îCh䏿˜¯ç‰©ç†èƒŒæ™¯,对相关的内容ä¸ç†Ÿæ‚(zh¨¨n)‰ï¼Œæ‰€ä»¥ç›´æŽ¥æ— 视了。这也很对,½W¦åˆç‰©ç†å¦çš„¾_„¡¥žã€?br />
å¯èƒ½å¤§å¤šæ•îCh都知é“函数å¼è¯è¨€å’Œå‘½ä»¤å¼è¯è¨€éƒ½æ˜¯å’Œå›¾ç‰|œº½{‰äh(hu¨¢n)çš„ï¼Œå› æ¤å®ƒå…·æœ‰æŸ¿U终æžèƒ½åŠ›ï¼Œæ€€ç–‘å®ƒæ— å¼‚äºŽæ€€ç–‘æˆ‘ä»¬ä¸–ç•Œå˜åœ¨çš„基础。但是请注æ„åQŒè¿™¿Uç‰ä»äh€§æ˜¯æ•°å¦æ€§çš„ã€‚å®ƒæ½œåœ¨çš„è¦æ±‚æ˜¯æ— é™çš„能é‡å’Œæ—‰™—´æ¶ˆè€—。如果在é™å®šçš„物ç†çº¦æŸä¸‹åQŒæˆ‘们会å‘现我们的选择范围会大大羃?y¨u)®ã€‚所以我è¯?函数å¼è¯a€å’Œå‘½ä»¤å¼è¯è¨€çš„计½Ž—能力相åŒï¼Œä½†æ˜¯åœ¨å…·ä½“的情åŞ下它们的æè¿°èƒ½åŠ›æ˜¯ä¸åŒçš„". æ¯”å¦‚è¯´æˆ‘çŽ°åœ¨æœ‰æ— ½I·å¤š¿Uæ–¹å¼ä»ŽåŒ—京跑到上æ“våQŒä½†æ˜¯å¦‚æžœé™å®šåªå…许ç”?凿±½æ²¹ï¼Œé‚£ä¹ˆæˆ‘们的选择ž®Þp¿‘乎于0。飞机和汽èžRçš„è¿è¾“能力是相åŒçš„å—。物ç†å¦çš„一个基本精¼œžåœ¨äºŽä¸€¿Uç‰©ç†æ€§çš„¾U¦æŸæ˜¯å§‹¾lˆå˜åœ¨çš„。而事实上åQŒæˆ‘们在实际工作ä¸ä¹Ÿæ€ÀL˜¯åœ¨å„¿U有é™çš„ç‰©ç†æ¡äšg下工作ã€?br />
ä¹Ÿè®¸æœ‰äº›äºø™®¤ä¸ø™¿™¿UåŒºåˆ†æ˜¯æ— å…³ç´§è¦çš„,我们åªå…³å¿ƒæŸ¿U终æžçš„东西。但是物ç†å¦ä¸æœ‰ç€å¤ªå¤šçš„例è¯ï¼Œè¯´æ˜Žåœ¨æœ‰é™çº¦æŸä¸‹åQŒæ•´ä¸ªç³»¾lŸå‘ˆçŽ°å‡ºå®Œå…¨ä¸åŒçš„æ€§è´¨ã€‚在通信领域我们都知é“Shannon定ç†åQŒå®ƒçš„物ç†è¯ 释是在有噪声的信é“上å¯ä»¥æœ‰æ•ˆ 的进è¡?strong>准确的信æ¯ä¼ é€’ã€‚ä½†æ˜¯è¿™ä¸€è¯ é‡Šåªèƒ½åœ¨æœ‰é™çš„æ•°å¦¾_‘Öº¦åQˆè¿œå¤§äºŽæˆ‘们实际需求的¾_‘Öº¦åQ‰ä¸Šæˆç«‹, 在ç»å¯¹å‡†¼‹®çš„æ•°å¦æ„义上,˜q™æ˜¯ä¸å¯èƒ½çš„事情ã€?br />
ä½ è§‰å¾—çŽ°åœ¨çš„é€šç”¨è¯è¨€åšè“v领域相关的东西æ¥å¾ˆæ–¹ä¾¿å—åQŒè¿™ž®±æ˜¯æˆ‘æ‰€è°“æ— æ³•æœ‰æ•ˆæ‰¿è½½çš„å«ä¹‰ã€‚在˜q™é‡Œæˆ‘也没有å¦è®¤"未æ¥çš„牛è¯è¨€å¯ä»¥è½ÀL¾æžå®šç›®å‰éšùN¢˜"çš„å¯èƒ½æ€§ã€?br />
å› äØ“æ‰€æœ‰çš„è½¯äšg设计最¾lˆéƒ½è¦è½å®žåˆ°æŸç§ä»£ç 实现上,所以怎么会有什么神¿U˜çš„软äšg¾l“构是现有的è¯è¨€æ— 法æè¿°çš„呢。但是ErLangä¸é‚£¿U高òq¶å‘åQŒæ”¯æŒé”™è¯¯æ¢å¤çš„½E‹åº¾l“构是在其他è¯è¨€ä¸èƒ½å¤Ÿè½»æ‘Ö®žçŽ°çš„å—。很多äh䏿˜¯åœ¨æ½œæ„识ä¸è®¤ä¸ºErLangçš„æˆåŠŸæ˜¯å‡½æ•°å¼è¯a€æŽ’他性的æˆåŠŸå—ï¼Œä¸æ˜¯è®¤äؓ命ä×oå¼è¯a€æ— 论如何实现ä¸äº†ErLang的程åºç»“构的å—。很昄¡„¶åQŒåœ¨å‘½ä×oå¼è¯a€ä¸æ˜¯æ— 法直接实现ErLangä¸çš„½E‹åº¾l“构的,å¦åˆ™å®ƒå°±å˜æˆäº†å‡½æ•°å¼è¯è¨€åQŒä½†æ˜¯æ‰€æœ‰å‘生在ErLang世界ä¸çš„äº‹å®žéƒ½ä¸€æ ·å¯ä»¥å‘生在命ä×oå¼è¯a€çš„世界ä¸ã€‚ErLangè¯è¨€çš„编译器å¯ä»¥æ˜¯ä‹É用命令å¼è¯è¨€å®žçŽ°çš„ï¼Œåœ¨ç»ˆæžçš„æ„ä¹‰ä¸Šï¼Œè¯è¨€ä¹‹é—´èƒ½æœ‰ä»€ä¹ˆåŒºåˆ«å‘¢åQ?br />
我说"实际上现在的通用è¯è¨€ä¹Ÿæ˜¯æ— 法有效承è²Domain Specific Structureçš?, ˜q™è¿˜æœ‰å¦ä¸€å±‚å«ä¹‰ã€‚通用è¯è¨€è®¾è®¡æ€ÀL˜¯è¦è€ƒè™‘到内¾|®ç»“构的æŸç§é€šç”¨æ€§ï¼Œè®¾è®¡æ—¶èƒ½å¤Ÿå‡ä¾çš„ä¿¡æ¯è¾ƒå°‘åQŒå› æ¤ä¸å¯èƒ½ç›´æŽ¥åˆ‰™€ 柿U夿‚的领域相关的结构。而目å‰å·²çŸ¥çš„通用è¯è¨€ä¸æä¾›çš„¾l“构抽象的手ŒDµä¹Ÿä¸å¤Ÿå¼ºå¤§åQˆå®žé™…上我认ä¸ÞZ“Q何è¯a€éƒ½ä¸ä¼šå¼ºå¤§åˆ°å†…ç½®æ‰€æœ‰ç»“æž„ï¼Œä¹Ÿæ— æ³•æä¾›æ‰€æœ‰çš„¾l“构抽象手段åQ‰ï¼Œ 相当于是把领域结构问题推¾l™ç¨‹åºå‘˜è§£å†³ã€‚è¿™ž®±å¦‚åŒCè¯è¨€æŠŠå†…å˜ç®¡ç†æŽ¨¾l™ç¨‹åºå‘˜è§£å†³ä¸€æ —÷€‚现在ruby比较‹¹è¡Œä¸å°±æ˜¯å› 为它能够动æ€å¤„ç†å¾ˆå¤šç»“构问题å—åQŒä½†æ˜¯å®ƒçŽ°åœ¨æ‰€ä½œçš„ä¸€åˆ‡å°±æ˜¯èƒö够的了å—。难é“二å年之åŽå†æ¥çœ‹è¿™ä¸ªè¯a€åQŒä¸èƒ½å¤Ÿå‘现它å˜åœ¨ç€å·¨å¤§çš„æ”¹˜q›ç©ºé—´å—。我们目å‰åœ¨Witrixä¸é€šè¿‡tpl模æ¿è¯è¨€åQŒbizflow extends½{‰æœºåˆÓž¼Œ¾l“åˆæ•´ä½“框架设计实现了一些与rubyä¸åŒçš„ç»“æž„æž„é€ æ–¹æ³•ã€‚è¿™äº›æ‰‹ŒDµéƒ½æžå¤§çš„增å¼ÞZº†æˆ‘们é¢å¯¹é¢†åŸŸé—®é¢˜æ—¶çš„信心åQŒä¹Ÿ¼‹®ä¿äº†æˆ‘们的领域知识是技术层é¢ä¸Šå¯ç§¯ç´¯çš„。但是å³ä½¿è¿™æ øP¼Œæˆ‘对½E‹åºå‘展的现状就是满æ„çš„å—?éšùN“ä¸å˜åœ¨æ›´åŠ ä¸°å¯Œçš„¾l“构知识½{‰å¾…我们åŽÕd‘现å—åQŸä¸€èˆ¬ähæ€ÀL˜¯ä¹ 惯接å—å·²ç»å˜åœ¨çš„现实,在有é™çš„èŒä¸šç”Ÿæ„Óä¸æŠŠå®ƒä»¬å½“ä½œä¸å˜çš„真ç†ï¼Œå´æ²¡æœ‰è€å¿ƒçš„去æ€è€ƒå¦‚何去改å˜ã€?br />
æˆ‘è®¤ä¸ºå¾ˆå¤šç»“æž„é—®é¢˜ä¸æ˜¯éœ€è¦åœ¨è¯è¨€å±‚é¢å¾—到解决的,而是应该在独立的¾l“构层(òq›_°åQŒæ¡†æžÓž¼‰˜q›è¡Œè§£å†³ã€‚è¿™æ„å‘³ç€æ²¡æœ‰å¿…è¦åœ¨è¯a€å±‚é¢ç›´æŽ¥å†…ç½®æŸç§ç‰¹å®šçš„结构,内置æŸç§ç‰¹å®šçš„结构抽象手ŒDüc€‚这基本¾cÖM¼¼äºŽè¯´ä¸è¦æŠŠé›†åˆè®ºæ‰©å¤§åˆ°åŒ…嫿‰€æœ‰çš„æ•°å¦å…³ç³»åQŒè¯·åœ¨åˆ«çš„妿U‘分支丘q›è¡Œç ”ç©¶ã€‚éœ€è¦æ³¨æ„çš„æ˜¯ï¼Œæˆ‘æ‰€è°“çš„é¢†åŸŸçŸ¥è¯†ä¸æ˜¯ç‰¹å®šçš„业务知识,而是从业务知识ä¸å¯ä»¥åˆ†æžå¾—到的柿Uæ›´åŠ é€šç”¨çš„æ™®é€‚çš„¾l“构知识åQŒç”šè‡Ïx˜¯å¯ä»¥ä½¿ç”¨æ•°å¦˜q›è¡Œ¾_„¡¡®æè¿°çš„ã€?br />
çŽîC»£è½¯äšgå‘展的时间还很çŸåQŒä¸Žæ•°å¦å’Œç‰©ç†å¦˜q™æ ·æ·±åˆ»çš„妿U‘ç›¸æ¯”ï¼Œå®ƒæ— ç–‘æ˜¯ç›¸å¯¹òq¼ç¨šçš„,是待æˆé•¿çš„ï¼Œæ˜¯æ›´åŠ çš„ä¸å®Œ¾ŸŽçš„。在½E‹åºæž„å¾çš„基本问题上òq¶æ²¡æœ‰æŠ½è±¡å‡ºä»€ä¹ˆå¯ä»¥å®žé™…æ“作的¾_„¡¡®è§„律。这是所谓Pattern在èÊY件业‹¹è¡Œçš„éƒ¨åˆ†åŽŸå› ï¼šæˆ‘ä»¬å¸Œæœ›ç”¨è¿™¿UåŠå½¢å¼åŒ–çš„æ–¹å¼æ•获æŸç§æ€è€ƒçš„¾l“果。但是èÊY件真的除了基于抽象数å¦çš„全局的全¿U°æ€§çš„è¯æ˜Žä¹‹å¤–åQŒä¸èƒ½å¤Ÿåœ¨å±€éƒ¨è¿›è¡ŒæŸ¿Uæ›´åŠ å¤æ‚ï¼Œæ›´åŠ ä¸¥è°}的分æžå—ã€?br />
我们说结构问题是独立的,˜q™ä¹Ÿæ„味ç€å®ƒå’Œå…·ä½“的实现è¯a€å…ähœ‰æŸç§æ„义上的分离性。通过一¿Uè¯a€ä¹¦å†™çš„结构å¯ä»¥åœ¨å¦ä¸€¿Uè¯a€ä¸å¾—到表达。我们å¯ä»¥å¾ç«‹è¯a€ä¸ç«‹çš„æŠ€æœ¯ç»“构。一¿U所谓的¾l“构在概念上å…ähœ‰æŸç§¼‹®å®šçš„åÅžæ€ï¼Œæˆ‘们å¯ä»¥è„Þq¦»å…·ä½“çš„è¯a€æ¥ç†è§£å®ƒã€‚例如我è¯?é¢å‘对象的ç‘ô承关¾pÖM»Ž¾l“构观点上看是两个一¾l´é›†åˆä¹‹é—´çš„覆盖关系". 在java䏿ˆ‘们å¯ä»¥ç›´æŽ¥ä‹É用è¯a€æä¾›çš„ç‘ô承机åˆÓž¼Œè€Œåœ¨Cè¯è¨€ä¸æˆ‘们就需è¦å¾ç«‹æŸ¿U结构体åQŒæ‰‹åŠ¨ç»´æŒæ‰€æœ‰çš„æŒ‡é’ˆå…Œ™”。而在Witrixòq›_°ä¸ï¼Œæˆ‘们从ç‘ô承的¾l“æž„è¯ é‡Šå‡ºå‘åQŒå®šä¹‰äº†æ›´åР夿‚çš„extends½Ž—ååQŒè¿™ž®±éœ€è¦åˆ©ç”¨javaè¯è¨€¾~–制特定的parseræ¥å®žçŽîCº†ã€‚但是显ç„Óž¼Œåœ¨æ€è€ƒçš„æ—¶å€™æˆ‘们所有的æ€ç»´æŒ‡å‘是结构本íw«ï¼Œè€Œä¸æ˜¯ä“Q何通用è¯è¨€çš„è¯æ³•ã€?br />
在物ç†å¦ä¸ï¼Œé€šè¿‡æ‘„åŠ¨åˆ†æžæˆ‘们å¯ä»¥æ¸…楚地æ„识到åQšåŒæ ·ä¸€ä¸ªç‰©ç†çŽ°è±¡å¯¹åº”çš„æ•°å¦æ¨¡åž‹å¯ä»¥æ˜¯ä¼—多的åQŒä½†æ˜¯åœ¨ç‰¹å®šçš„傿•°åŒºæˆ‘们会选择æŸç§ç‰¹å®šçš„æ•°å¦è¡¨˜qŽÍ¼Œòq¶ç¡®å®šå…¶ä¸çš„å¾…å®šå‚æ•°ã€?br />
delta函数是物ç†å¦å®¶ç‹„拉克引入的,在Schwatz引入分布概念建立òq¿ä¹‰å‡½æ•°è®ÞZ¹‹å‰ï¼Œç‰©ç†å¦å®¶ä»¬å·²¾lä‹Éç”¨è¿™ä¸€å‡½æ•°å·¥ä½œäº†å¾ˆå¤šå¹´ã€‚åŽæ¥Abraham Robinsen利用数ç†é€»è¾‘æ–ÒŽ(gu¨©)³•åQŒå¾ç«‹äº†éžæ ‡å‡†åˆ†æžï¼Œé€šè¿‡æ¨¡åž‹è®ºçš„æ–ÒŽ(gu¨©)³•¾_„¡¡®å®šä¹‰äº†æ— ½I·å°çš„æ¦‚å¿µï¼Œä»Žæ›´åŠ ç›´æŽ¥çš„è§’åº¦è®ø™¯äº†deltaçš„åˆç†æ€§ã€‚但是在物ç†å¦å®¶çœ‹æ¥åQŒè¿™äº›æ•°å¦åˆæœ‰ä»€ä¹ˆåŒºåˆ«å‘¢åQŸç‰©ç†å¦åªæ˜¯æŒ‰ç…§ç‰©ç†çš„è¯ é‡Šè¿›è¡Œå·¥ä½œï¼Œå…·ä½“çš„æ•°å¦åªæ˜¯å®ƒå¯é€‰çš„工具而已ã€?br />
物ç†çš„真ç†åÆˆä¸æ˜¯è•´å«åœ¨æ•°å¦ä¸çš„ï¼Œå®ƒéœ€è¦æˆ‘们独立的探烦åQŒä»Žä¸Žæ•°å¦ä¸åŒçš„观点˜q›è¡Œæ€è€ƒï¼Œ‹‚€éªŒï¼Œæœ€¾lˆæˆ‘们æ‰èƒ½åšå‡ºçœŸæ£çš„å‘现。广义相对论å¯ä»¥é‡‡ç”¨Riemmanå‡ ä½•˜q›è¡Œæè¿°åQŒä½†æ˜¯å®ƒçš„物ç†è¯ é‡Šå´æ˜¯Einsteinæå‡ºçš? æ²¡æœ‰äºø™¯´Riemann或者Hilbertå‘现了广义相对论。å¦å¤–一斚w¢åQŒå› 为Einstein的工作触å‘äº†å¯¹äºŽå¾®åˆ†å‡ ä½•çš„æ›´åŠ æ·±å…¥çš„ç ”ç©¶åQŒé ç€ç‰©ç†ç›´è§‰çš„导引,我们ž®†è¿™ä¸€æ•°å¦åˆ†æ”¯æŽ¨è¿›åˆîCº†éš¾ä»¥æƒŒ™±¡çš„æ·±åº¦ã€?æ•°å¦æ˜¯æ— 法涵盖物ç†å¦çš?. ˜q™ä¸æ˜¯è¯´æœ€¾lˆç‰©ç†å¦æ— 法采用数å¦è¯è¨€˜q›è¡Œæè¿°åQŒè€Œæ˜¯è¯´åœ¨˜q™ä¸€å‘展˜q‡ç¨‹ä¸ï¼Œæ‰€æœ‰æ€æƒ³çš„æŽ¨åŠ¨æ¥æºäºŽç‰©ç†å¦çš„¾l验åQŒæ¥æºäºŽæˆ‘们在这个物质世界上所˜q›è¡Œçš„åå¤éªŒè¯ã€‚䏿˜¯åœ¨ä¸€ä¸ªå°é—çš„ž®å±‹ä¸ï¼Œæ•´å¤©æ‘†å¼„å„ç§æ•°å¦½W¦å·åQŒæˆ‘ä»¬å°±èƒ½å¤Ÿå‘æ˜Žæ‰€æœ‰çš„物ç†å…¬å¼æ‰€å¯¹åº”的数å¦ã€‚实际上åQŒçŽ°åœ¨å¦æœ¯ç•Œæ™®é承认åQŒæ²¡æœ‰ç‰©ç†å¦çš„æŽ¨˜q›ï¼Œå¾ˆå¤šæ•°å¦çš„进展是ä¸å¯èƒ½å‘生的ã€?br />
物熾pÀL¯å¤©éƒ½åœ¨æ¼”½Ž—ç€Feynman路径¿U¯åˆ†, 但是所有äh都知é“è¿™æ˜¯æ²¡æœ‰ä»€ä¹ˆä¸¥æ ¼çš„æ•°å¦ä¾æ®çš?ç›®å‰òq¶æ— 法定义èµ\径积分的收敛æ€?但是所有ähå¯ÒŽ(gu¨©)¤é¿è€Œä¸è°? åªè¦å½¢å¼æ¼”ç®—åˆæ³•,物ç†é¢„测½W¦åˆå®žéªŒ, åˆç†æ€§çš„è¯æ˜Žåªæ˜¯æ•°å¦å®¶ä»¬çš„事æƒ? 在é‡å场è®ÞZ¸æ‰€é‡‡ç”¨çš„釿•´åŒ–(Renormalization)æ–ÒŽ(gu¨©)³•ä¸è¿‡æ˜¯å›žé¿æ— ½I·å¤§é—®é¢˜çš„一¿UåÅžå¼æ‰‹ŒD?我们ä»ç„¶æ— 法在数å¦å±‚é¢å¯¹æ‰€æœ‰çš„æ¼”算都给予åˆç†åŒ–解释. 在更多的物ç†åˆ†æ”¯ä¸å·¥ä½œï¼Œä½ 就会å‘现物ç†å¦å®¶çš„胆å䏿˜¯ä¸€èˆ¬çš„å¤§ã€‚ä¹Ÿè®¸åœ¨æœªæ¥æˆ‘们能够å‘现˜q™äº›ç‰©ç†˜q‡ç¨‹èƒŒåŽæ•°å¦æœºåˆ¶çš„ç²¾¼‹®å®šä¹? 但也许最¾lˆæˆ‘ä»¬ä¹Ÿæ— æ³•æ‰‘Öˆ°åˆé€‚的定义方å¼. 但这对物ç†å¦å®¶æ¥è¯? òq¶ä¸æ˜¯å¾ˆå¤§çš„æ‰“击.å› äØ“æŒ‡å¼•æˆ‘ä»¬çš„æ˜¯ç‰©ç†ç›´è§‰åQŒæ˜¯ç‹¬ç«‹äºŽæ•°å¦çš„物质世界的æ„象ã€?br />
我所惌™®¨è®ºçš„䏿˜¯æŸç§¾lˆæžæ„义上的å¯èƒ½æ€§ï¼Œä¸æ˜¯¾l对概念之间的冲½H,而是在物ç†çŽ°å®žçš„¾U¦æŸä¸‹ï¼Œæˆ‘们如何æ‰èƒ½æœ‰æ•ˆå·¥ä½œçš„问题。我已ç»åå¤è¡¨è¿°äº†è‡ªå·Þqš„观点: "¾l“æž„æ˜¯å¯æŠ½è±¡çš„ï¼Œæ˜¯å…·æœ‰ç‹¬ç«‹æ„义的。这ž®±æ˜¯Witrix所æå‡ºçš„é¢å‘ç»“æž„çš„è®¾è®¡è§†è§’ã€‚ä¸æ˜¯å¼ºè°ƒå¯¹è±¡çš„æ‰€è°“业务å«ä¹‰ï¼Œä¸æ˜¯å¼ø™°ƒæŸç§é€šç”¨è¯è¨€åQˆä¾‹å¦‚rubyåQ‰çš„ç‰|´»çš„è¯æ³•结构。在˜q™ä¹‹é—´å˜åœ¨ç€åŽšé‡çš„å…·æœ‰ç‰©ç†æ„义的å¯ä»¥˜q›è¡Œ¾l“构分æžçš„æŠ€æœ¯å±‚ ". 也许有äh觉得我说的这是废è¯? 但是当系¾lŸåŒ–的执行一¿Uæ€æƒ³çš„æ—¶å€?ž®×ƒ¼šæç¤ºå‡ºæœªé¢„料到的å¯èƒ½æ€? 整个Witrixòq›_°½Ž€å•的说è“væ¥å°±æ˜?é¢å‘¾l“构的çñ”列分æž?/strong>", 但是如何扑ֈ°åˆé€‚的技术åÅžå¼æ¥ä½“现˜q™ä¸€æ€æƒ³,å´ç»å¯¹ä¸æ˜¯ä¸€ä»¶åã^凡的事情. "在Witrix䏿ˆ‘们实现的代ç é‡ç”¨½E‹åº¦å’Œç¨‹åºæ•´ä½“结构控制能力是‘…è¶Šäº†ç›®å‰æ‰€æœ‰å·²çŸ¥çš„å…¬å¼€æŠ€æœ¯çš„ã€‚è¿™ä¸æ˜¯ä»€ä¹ˆå“²å¦ï¼Œè€Œæ˜¯æˆ‘们在残é…ïL(f¨¥ng)š„商业竞争ä¸å¾—以生å˜çš„资本".http://canonical.javaeye.com/blog/126467
在我看æ¥åQŒè®¡½Ž—机领域充斥瀾U¯æ•°å¦çš„æ·±æ²‰é想和从工程实践而æ¥çš„è½»ä½Õd¸¸è¯†ï¼Œ˜q˜æ²¡æœ‰æ³¨æ„到物ç†å¦æ‰€èƒ½å¸¦æ¥çš„ä¸åŒçš„åŒæ äh·±åˆÈš„视角。我常说åQŒå¥½å¥½å¦ä¹ ç‰©ç†æ˜¯å¿…è¦çš„ï¼Œå› äØ“˜q™ä¸ªä¸–界˜qœæ¯”ä½ æƒ³è±¡çš„è¦å¤æ‚的多ã€?br />
]]> 关于函数å¼è¯a€çš„一些说æ˜?/title> http://www.aygfsteel.com/canonical/archive/2007/12/06/165900.htmlcanonical canonical Thu, 06 Dec 2007 14:12:00 GMT http://www.aygfsteel.com/canonical/archive/2007/12/06/165900.html http://www.aygfsteel.com/canonical/comments/165900.html http://www.aygfsteel.com/canonical/archive/2007/12/06/165900.html#Feedback 1 http://www.aygfsteel.com/canonical/comments/commentRss/165900.html http://www.aygfsteel.com/canonical/services/trackbacks/165900.html
我说å®?/strong>际上现在的通用è¯è¨€ä¹Ÿæ˜¯æ— 法有效承è²Domain Specific Structureçš?/strong>ã€?/strong> 其实与以下说法是¾cÖM¼¼çš?br />
æ•°å¦æ˜¯æ— 法涵盖物ç†å¦çš„,现在的已知的数å¦å·¥å…·æ˜¯æ— 法有效承载尚未得到充分探索的领域的物ç†çš„
我说我所兛_¿ƒçš„䏿˜¯è¯a€å±‚é¢çš„é—®é¢?/strong>ã€?/strong> ˜q™ç±»ä¼égºŽè¯?strong>ä¸è¦æŠŠæ‰€æœ‰ç‰©ç†é—®é¢˜éƒ½æŽ¨åˆ°æ•°å¦å±‚é¢åŽ»è§£å†?/strong>ã€?br />
æˆ‘ä»¬åº”è¯¥ç ”ç©¶ç‹¬ç«‹çš„ç»“æž„ï¼Œåº”è¯¥å»ºç«‹å•独的äh(hu¨¢n)倯D§‚和方法论。ä¸è¦è°ˆåŠä¸€ä¸ªæŠ€æœ¯è¿›å±•çš„æ—¶å€™å°±è¯´æŸæŸè¯a€å¥½ï¼Œä¸æ˜¯ä¸€è¯´åˆ°DSL的优点就è¦åŽ»æŠ±ruby的大è…Ñ€‚æ¤å¤–ï¼Œæˆ‘çš„è§‚ç‚¹ä¹Ÿä¸æ˜¯åŽ»åšä¸šåŠ¡åˆ†æžï¼Œä¸æ˜¯åŽÕd¦‚何更好的实现业务到基¼‹€æŠ€æœ¯ç»“æž„çš„æ˜ å°„ã€?br />
䏿˜¯å¼ø™°ƒå¯¹è±¡çš„æ‰€è°“业务å«ä¹‰ï¼Œä¸æ˜¯å¼ø™°ƒæŸç§é€šç”¨è¯è¨€åQˆä¾‹å¦‚rubyåQ‰çš„ç‰|´»çš„è¯æ³•结构。在˜q™ä¹‹é—´å˜åœ¨ç€åŽšé‡çš„å…·æœ‰ç‰©ç†æ„义的å¯ä»¥˜q›è¡Œ¾l“构分æžçš„æŠ€æœ¯å±‚ã€?/strong>
我想说这个结构层é¢çŽ°åœ¨åÆˆæœªå¾—åˆ°å……åˆ†çš„å…Ïx³¨åQŒæˆ‘们对于结构的问题òq¶ä¸æ˜¯éžå¸¸æ¸…楚,对程åºç»“构的½E›_®šæ€§æ›´æ˜¯å°‘有ç»éªŒã€‚我们在Witrixä¸åšäº†å¤§é‡çš„工作åQŒè¯•囑֚到如下的图景åQ?br />
永远åªå†™ä»£ç 片æ–åQŒè€Œæ‰€æœ‰çš„代ç 片斾l„åˆåœ¨ä¸€èµ·åˆæž„æˆä¸€ä¸ªå¯ç†è§£çš„æ•´ä½?/strong>
å¯¹èƒŒæ™¯ä¸æ˜¯åˆ†è§£è®©å…¶æˆä¸ºå¯è§çš„部分åQŒè€Œæ˜¯é‡‡ç”¨˜q½åŠ çš„ï¼Œå¢žåˆ çš„æ–¹æ³•å¯¹èƒŒæ™¯¾l“æž„˜q›è¡Œä¿®æ£åQŒåˆ™æˆ‘们有å¯èƒ½åœ¨æ²¡æœ‰å®Œæ•´èƒŒæ™¯çŸ¥è¯†çš„æƒ…况下åQŒç‹¬ç«‹çš„ç†è§£å±€éƒ¨å˜åŒ–çš„¾l“构。å³èƒŒæ™¯æ˜¯é€æ˜Žçš„,知识æˆäؓ局部的ã€?/strong>
http://canonical.javaeye.com/blog/126467
在Witrix䏿ˆ‘们实现的代ç é‡ç”¨½E‹åº¦å’Œç¨‹åºæ•´ä½“结构控制能力是‘…è¶Šäº†ç›®å‰æ‰€æœ‰å·²çŸ¥çš„å…¬å¼€æŠ€æœ¯çš„ã€‚è¿™ä¸æ˜¯ä»€ä¹ˆå“²å¦ï¼Œè€Œæ˜¯æˆ‘们在残é…ïL(f¨¥ng)š„商业竞争ä¸å¾—以生å˜çš„资本ã€?br />
å·å¤–åQ?br />
ä¸è¦æŠŠå…·ä½“的技术和一¿UæŠ€æœ¯æ€æƒ³æ··äؓ一谈。一¿U实现æ€ÀL˜¯åŒ…å®¹äº†å¤ªå¤šçš„æ€æƒ³ã€‚æ€æƒ³é”™äº†åQŒå®žçŽ°å¯¹äº†ã€‚å®žçŽ°æ»äº†ï¼Œæ€æƒ³‹zÈ€ã€?br />
]]> 关于函数å¼è¯a€çš„åªa€ç‰‡è¯ http://www.aygfsteel.com/canonical/archive/2007/12/05/165664.htmlcanonical canonical Wed, 05 Dec 2007 14:09:00 GMT http://www.aygfsteel.com/canonical/archive/2007/12/05/165664.html http://www.aygfsteel.com/canonical/comments/165664.html http://www.aygfsteel.com/canonical/archive/2007/12/05/165664.html#Feedback 8 http://www.aygfsteel.com/canonical/comments/commentRss/165664.html http://www.aygfsteel.com/canonical/services/trackbacks/165664.html
2. 最˜q‘这些年æ¥ä¸€¿Uç§°ä¸?范畴"(Category)的东西在计算机ç†è®ºç ”½I¶ä¸é¢‘频出现。范畴论是从åŒè°ƒä»£æ•°å‘展而æ¥çš„一¿U较新的代数è¯è¨€åQŒä½†å®ƒæ˜¾ç„¶ä¹Ÿä¸æ˜¯å¯ä»¥è§£å†³ä»ÖM½•问题的çµä¸¹å¦™è¯ã€‚多一¿U表达方å¼å½“然在æŸç§½E‹åº¦ä¸Šå¯ä»¥å¢ž˜q›æˆ‘们的ç†è§£ã€‚但是范畴本íw«åªæ˜¯ç ”½I¶ä¸€¿U基¼‹€¾l“æž„åQŒå®ƒæœ¬èínòq¶æ²¡æœ‰æ‰¿è½½æ‰€æœ‰çš„物ç†äº‹å®žåQŒåŸºäºŽå®ƒä¸å¯èƒ½å¯¹æ‰€æœ‰çš„规律一¾|‘打ž®½ã€‚䏿˜¯æ˜Žç™½äº†èŒƒç•´åQŒå°±æ‡‚了½E‹åºã€‚范畴论是一¿U基¼‹€æ€§çš„è¯è¨€åQŒæœ‰äº›ähè‡´åŠ›äºŽåŸºäºŽèŒƒç•´è®ºæ¥æž„建数å¦çš„其他分支åQŒå–代集åˆè®ºçš„地ä½ã€‚å°†è®¡ç®—çš„æœ¬è´¨é‡æ–°å½’¾l“äºŽèŒƒç•´è®ºæ˜¯æ— æ„义的åQŒå®ƒä¸è¿‡æ˜¯å¯¹äº‹å®žçš„å¦ä¸€¿U陈˜q°æ–¹å¼ã€‚说“函数å¼è¯a€æ˜¯åŸºäºŽèŒƒç•?#8221;æ˜¯æ— æ„ä¹‰çš„ï¼Œå› äØ“˜q™å’Œè¯?#8220;所有现代数å¦éƒ½åŸÞZºŽé›†åˆè®?#8221;ä¸€æ —÷€‚æ— æ³•å‘现新的相互作用关¾p»ï¼Œæ‰€æœ‰çš„æ¦‚å¿µéƒ½åªæ˜¯åŒä¹‰åå¤ã€‚䏿˜¯ä¸€æ‹¿è“væ•°å¦åQŒå°±æ‰‘Öˆ°äº†ç»„¾l‡ã€?br />
3. 我对函数å¼è¯a€òq¶æ²¡æœ‰ä»€ä¹ˆåå¯ÒŽ(gu¨©)„è§ã€‚它是éžå¸”R‡è¦ä¹Ÿéžå¸¸ä¼˜ç¾Žçš„一¿UæŠ€æœ¯æ€æƒ³ã€‚但是现在一些函数å¼è¯è¨€çš„ç‹‚çƒæ”¯æŒè€…似乎对函数世界充满了乌托邦å¼çš„òqÀLƒ³åQŒä¸€¿U大一¾lŸçš„ä¸–ç•Œè§‚è®©äºø™¿·é†‰ï¼Œä½†æ˜¯å®ƒå´è§£å†³ä¸äº†çŽ°å®žçš„é—®é¢˜ã€‚æ‰€ä»¥æˆ‘è¯´æ— æ³•è®¤åŒå‡½æ•°å¼¾~–程的世界观。作ä¸ÞZ¸€¿Uå…·ä½“çš„æŠ€æœ¯å·¥å…øP¼Œé—®é¢˜ä¸åœ¨äºŽå‡½æ•°å¼è¯è¨€æ˜¯å¦ä½“现了计½Ž—的本质åQŒè€Œåœ¨äºŽå®ƒæ˜¯å¦å‘我们æä¾›äº†¿U°æ‰‹çš„兵器。现在我è¦è®¡½Ž—两个å°çƒç›¸äº’碰撞的问题åQŒæˆ‘å¯ä»¥æ“è“vòq¿ä¹‰ç›¸å¯¹è®ºï¼Œé‡å力å¦å•¥çš„开始大òq²ä¸€åœºï¼Œä¹Ÿå¯ä»¥ç”¨ä¸ªç‰›™å¿åŠ›å¦å°è¯•牛刀åQŒç”šè‡›_¯ä»¥åªç”¨åž®„å…³¾pÀL‘†ä¸ªç‰å¼ã€‚但是在¾l大多数情况下我们都会说˜q™é‡Œé¢çš„ç‰©ç†æ˜¯å¼¹æ€§åž®„è€Œä¸æ˜¯ç›¸å¯¹è®ºã€‚在ç†è®ºåˆ†æžä¸æˆ‘们ç»å¸æ€‹É用åã^颿‡Lå‡è®¾åQŒä½†åªè¦å®žé™…å…›_¿ƒçš„对象ä¸åœ¨æ‡L包的边缘åQŒæ²¡æœ‰äh会认为åã^颿‡L䏿˜¯çœŸå®žçš„ç‰©ç†æœºåˆ¶ã€‚ç†è®ºç‰©ç†ä¸æ˜¯ç†æƒ³ç‰©ç†ã€‚åœ¨å…·ä½“çš„å‚æ•°è®¾å®šä¸‹åQŒæˆ‘们åªä¼šä‹É用特定的物ç†å¦ã€?br />
对世界的认识òq¶ä¸æ˜¯éžæ¤å³å½¼çš„ã€‚åÆˆä¸æ˜¯è¯´å‡½æ•°å¼è¯è¨€å¥½å®ƒ?y¨u)®±æ°¸˜qœéƒ½å¥½ï¼Œè¦æŠŠæ‰€æœ‰å¯¹ç«‹é¢éƒ½çæŽ‰ã€‚ä¹Ÿä¸æ˜¯è¯´å‡½æ•°å¼ä¸å¥½åQŒå‘½ä»¤å¼ž®±å¿…然的好,ž®±å¿…然的能够解决问题。函数å¼è¯è¨€çš„世界观˜q‡åˆ†å•纯而排他,˜q™æ˜¯æˆ‘å对的åQŒæˆ‘åŒæ ·æ— 法认åŒé¢å‘å¯¹è±¡çš„æœ¬ä½“è®ºè®ø™°ƒã€‚å°±åƒCISCå’ŒRISCæž¶æž„ä¹‹äº‰ä¸€æ øP¼Œæœ€¾lˆæˆ‘们在现实的物ç†çº¦æŸä¸‹åQŒè¿è¡Œçš„æœ€å¥½çš„èŠ¯ç‰‡æ˜¯ä¸¤è€…æ€æƒ³çš„结åˆã€‚这是我们é¢å¯¹ç‰©ç†ä¸–界的基本æ€åº¦ã€?br />
4. 函数å¼è¯a€ä¸æ—¶é—´æ˜¯ä¸ªæœ‰‘£çš„æ¦‚念。命令å¼è¯è¨€ä¸å› 䏸™µ‹å€ÆD¯å¥çš„å˜åœ¨åQŒä‹É得我们å¯ä»¥è§‚‹¹‹åˆ°çжæ€çš„å˜åŒ–åQŒå› æ¤å¿…ç„¶è¦å®šä¹‰æ—‰™—´ã€‚而函数å¼è¯è¨€æ˜¯æ— 状æ€çš„åQŒå¯ä»¥æ˜¯æ— 时间概念(对Lazy Caculationçš„ä¾èµ–是å¦ä½“çŽîCº†æ·±å±‚‹Æ¡ä¸Šå¯ÒŽ(gu¨©)—¶é—´æ¦‚å¿ëŠš„需求?åQ‰ã€‚有些ähè®¤äØ“å‡½æ•°å¯ä»¥çœ‹ä½œæ˜¯ç›¸½Iºé—´ä¸çš„˜q移函数åQŒæ˜¯ä¸Žç›¸å¯¹è®ºåè°ƒçš„ï¼Œå› è€Œåæ˜ 了旉™—´çš„æœ¬è´¨ç‰½{‰ã€‚ç›¸å¯¹è®ºä¸»è¦æ˜¯è§£å†³äº†ç‰©ç†è§„律的åå˜æ€§çš„问题åQŒåœ¨æ¤è¿‡½E‹ä¸å®ƒä‹ÉäºÞZ»¬è®¤è¯†åˆîCº†æ—¶ç©ºä¹‹é—´å¥‡å¼‚的对¿U°æ€§ã€‚但是广义相对论的表˜qîC¸æ—‰™—´ä¹Ÿæ˜¯å¯é€†çš„。真æ£å®šä¹‰äº†æ—‰™—´ä¹‹ç®çš„æ˜¯çƒåŠ›å¦ç¬¬äºŒå®šå¾‹ã€‚æ ¹æ®Landauer's principle: 擦除(erase)1比特信æ¯åQŒè€—散到环境ä¸çš„能é‡è‡³ž®‘是k*T*ln2, 或者说熵增臛_°‘是k*ln2. ˜q™æ„味ç€åªè¦æˆ‘们对眼å‰çš„黑æ¿ä¸åœçš„写了擦åQŒæ“¦äº†å†™åQŒå°±å¿…ç„¶æ— æ³•å›žåˆ°˜q‡åŽ»ã€‚ç‰©ç†ä¸–ç•Œæ˜¯å¤æ‚çš„ã€?br />
5. 如果ž®†çжæ€çœ‹ä½œæ˜¯å¯ä»¥é™„ç€åœ¨æŸä¸ªå¯¹è±¡ä¸Šçš„æ ‡è®ŽÍ¼Œæ˜„¡„¶çжæ€çš„å˜åœ¨æ€§ä¾¿äºŽæˆ‘们识认概å¿ëŠš„å”¯ä¸€æ€§ã€‚å¯¹è±¡è¿˜æ˜¯é‚£ä¸ªå¯¹è±¡ï¼Œåªæ˜¯çŠ¶æ€æ ‡è®°å‘生了å˜åŒ–。而如果系¾lŸä¸æ²¡æœ‰çжæ€ï¼Œåˆ™å¿…ç„¶äñ”生了一个新的概å¿üc€‚这在很多情况下是ä¸å¿…è¦çš„负担。状æ€çš„å˜åœ¨ä½¿å¾—¾pÈ»Ÿåœ¨å±€éƒ¨ç»“构上å…许出现éžå¸¸å¤æ‚çš„å˜åŒ–,函数å¼ç¼–½E‹çš„æ‹¥è¶¸ä»¬å¯¹æ¤å¤šæœ‰è¯Ÿç—…。但是从å¦ä¸€ä¸ªæ–¹é¢ä¸Šè¯ß_¼Œçжæ€ä‹É得我们å¯ä»¥åŸºäºŽå±€éƒ¨ä¿¡æ¯å¤„ç†å¾ˆå¤šé—®é¢˜è€Œä¸éœ€è¦æŠŠå®ƒæ‰©å¤§åŒ–ä¸ÞZ¸€ä¸ªå…¨å±€åŒšw…问题ã€?br />
6. 函数构æˆå‡½æ•°ä¼ég¹Žæ˜¯å¾ˆå®Œå¤‡¾lŸä¸€çš„世界ã€?但是在物ç†ä¸–界ä¸å‘生的一切å´å¤æ‚的多。虽然世界å¯ä»¥è¿˜åŽŸäØ“åŽŸååQŒä½†æ˜¯åŽŸåæž„æˆåˆ†åï¼Œåˆ†åæž„æˆå®è§‚物质æ—Óž¼Œ¾pÈ»Ÿçš„基本性状å‘生了本质性的å˜åŒ–åQŒåƈä¸å†æ˜¯ç»Ÿä¸€çš„åÅžå¼ã€‚æ¯ä¸€ä¸ªå±‚é¢ä¸Šéƒ½ä¼šäº§ç”Ÿç‹¬ç«‹çš„结构规律ã€?br />
7. 函数å¼è¯a€å’Œå‘½ä»¤å¼è¯è¨€çš„计½Ž—能力相åŒï¼ˆå¯ä»¥ç›¸å·®ä¸€ä¸ªä“Qæ„é•¿åº¦çš„å¤šé¡¹å¼æ—¶é—ß_¼‰åQŒä½†æ˜¯åœ¨å…·ä½“的情形下它们的æ˜q°èƒ½åŠ›æ˜¯ä¸åŒçš„。我所兛_¿ƒçš„䏿˜¯è¯a€å±‚é¢çš„é—®é¢˜ï¼Œå› äØ“è¯è¨€æœ¬èínçš„èƒ½åŠ›åÆˆä¸èƒö以解决现实开å‘ä¸çš„æ‰€æœ‰é—®é¢˜ã€‚å³çŽ°å®žå¼€å‘䏿‰€éœ€è¦å¤„ç†çš„¾l“构问题òq¶ä¸æ˜¯åœ¨è¯è¨€å±‚é¢å¾—到充分解决的,˜q™æ˜¯æˆ‘们需è¦åšå·¥ä½œçš„地æ–V€?br />
关于现实ä¸çš„¾l“构问题åQŒæˆ‘æ— æ„åŽÕd®šä¹‰ä»€ä¹ˆä¸‡èƒ½çš„æè¿°èƒ½åŠ›ã€‚ä½ å¯ä»¥ç”¨å¾®åˆ†å‡ 何,¿U¯åˆ†å‡ 何åQŒå¹¿ä¹‰å˜åˆ†ç‰½{‰æ‰‹ŒDµåŽ»è¯æ˜Žåœ†ç›˜æ˜¯æŸ¿Uæ„义下的周长最çŸçš„东西åQŒä½†æ˜¯è¿™ä¸€åˆ‡å¯¹ä½ 呿˜Žè½®ååÆˆæ— æœ¬è´¨ä¸Šçš„åŠ©ç›Šã€‚ä¸˜q‡å¯ä»¥è¯´è¯´çŽ°å®žä¸çš„ç»“æž„ã€‚è¿™é‡Œä¸æ˜¯è¦è¯æ˜ŽæŸç§è¯è¨€ä¸æ— 法æ˜q°è¿™äº›ç»“构,而是说结构是客观å˜åœ¨çš„ï¼Œå®ƒåÆˆä¸æ˜¯è¦åœ¨åŸºç¡€è¯è¨€å±‚é¢å¾—到充分解决的。实际上现在的通用è¯è¨€ä¹Ÿæ˜¯æ— 法有效承è²Domain Specific Structureçš„ã€?br />
A. ErLang大概是目å‰ä¸–界上应用最为深入的函数å¼è¯a€äº†ã€‚它¼‹®å®žå‘挥了函数å¼è¯è¨€æ— 显å¼çжæ€å˜é‡çš„ä¼˜åŠ¿ã€‚ä½†æ˜¯å®ƒå¯¹ç¨‹åºæž„å»ºæœ¬è´¨ä¸Šçš„å¸®åŠ©æ›´å¤šçš„æ¥æºäºŽæ— å…׃ín的超轻釾U§è¿›½E‹æ¨¡åž‹ï¼Œç›¸å½“于定制了一般æ“作系¾lŸæ‰€æä¾›çš„基本æœåŠ¡ã€‚å¾®è½¯çš„ä¸€ä¸ªå®žéªŒæ€§æ“作系¾lŸé¡¹ç›®Singularity, å…¶ä¸ä¹Ÿå®šä¹‰äº†åªé€šè¿‡æ¶ˆæ¯ä¼ 递å‘生数æ®å…³è”çš„‘…è½»é‡çñ”˜q›ç¨‹æ¨¡åž‹åQŒå®ƒä½¿ç”¨C#的一个扩展è¯a€åQŒé¢å¤–å¢žåŠ çš„åŠŸèƒ½æ˜¯æ¶ˆæ¯ç®¡é“ä¸Šå®šä¹‰çš„è§„æ ¼çŠ¶æ€æœºåQŒå¯¹æ¶ˆæ¯äº¤äº’的时½Iºæ¨¡å¼è¿›è¡Œé¢å¤–çš„è§„çº¦ã€‚è¿™é‡Œå¯¹æˆ‘ä»¬çœŸæ£æœ‰äh(hu¨¢n)值的是隔¼›Èš„å•å…ƒ¾l“æž„ã€?br />
B. AOP是程åºç»“构空间ä¸çš„定ä½å’Œ¾l„装技术。在Witrix䏿ˆ‘们规范化了切点处的状æ€ç©ºé—ß_¼Œòq¶å¯¹AOP˜q›è¡Œäº†å¾|®å¤„ç?˜q™ç§¾l“构调整大大æé«˜äº†AOPçš„å¯ç”¨æ€§ï¼Œä½¿å¾—它æˆä¸ºWitrixä¸çš„æ ¸å¿ƒæŠ€æœ¯æ‰‹ŒDµä¹‹ä¸€ã€?br />
C. é¢å‘对象的ç‘ô承关¾pÖM»Ž¾l“构观点上看是两个一¾l´é›†åˆä¹‹é—´çš„覆盖关系。在Witrix䏿‰©å±•了extends所对应的结构æ“ä½œï¼Œåˆ›é€ äº†æ–°çš„¾l“æž„èžåˆæ‰‹æ®µã€?br />
]]> 关于[é¢å‘集åˆçš„æ¡†æž¶è®¾è®¡]的一些说æ˜?/title> http://www.aygfsteel.com/canonical/archive/2007/12/03/165039.htmlcanonical canonical Mon, 03 Dec 2007 15:54:00 GMT http://www.aygfsteel.com/canonical/archive/2007/12/03/165039.html http://www.aygfsteel.com/canonical/comments/165039.html http://www.aygfsteel.com/canonical/archive/2007/12/03/165039.html#Feedback 2 http://www.aygfsteel.com/canonical/comments/commentRss/165039.html http://www.aygfsteel.com/canonical/services/trackbacks/165039.html
如果在编制一个新的应用,å˜åœ¨å¤§é‡ä»£ç å¯èƒ½æ˜?br />
myFunc(){
for each x in set
doSomethingValuable(x);
return packedResult;
}
myOtherFunc(packedResult){
for each y in pakedResult
doSomethingOther(y)
}
其实我们真æ£å…›_¿ƒçš„æ˜¯å¾ªçŽ¯å†…éƒ¨çš„æŸä¸ªè¿‡½E‹ï¼Œä½†æ˜¯æˆ‘们¾l常å¯ä»¥è§‚察到它们被æŸäº›é€šç”¨çš„æˆ–者特定的循环åQˆé›†åˆé历)æ“作所包围ç€ã€‚Witrixçš„è®¾è®¡æ–¹å¼æ˜¯å¼ø™°ƒä¸šåŠ¡å…Ïx³¨ç‚¹ï¼Œè€ŒæŠŠæ‰€æœ‰çš„æ±‡æ€ÀL“ä½œå°½é‡æŠ½è±¡å®Œæˆã€‚比如现在界é¢ä¸Šæ˜„¡¤ºä¸€äº›å—ŒDüc€‚从抽象的æ“作上è¯?br />
for each field in dsMeta.viewableFields
show field.viewer
˜q™ä¸€˜q‡ç¨‹åœ¨åã^åîC»£ç ä¸å®žçްåQŒå®ƒæ˜¯ä¸€ä¸ªé€šç”¨çš„é›†åˆæ“作过½E‹ã€‚ä¸åŒçš„å…·ä½“åº”ç”¨åªæ˜¯å…›_¿ƒå…·ä½“å—æ®µçš„展现åÅžå¼ï¼Œè™½ç„¶æˆ‘们必然需è¦å—ŒDµé›†åˆï¼Œä½†æ˜¯å®ƒä¸æ˜¯æˆ‘们注æ„力的é‡å¿ƒã€?br />
如果考虑到嗌Dµåœ¨ç•Œé¢ä¸Šå±•½Cºæœ‰ä¸€ä¸ªå¸ƒå±€é—®é¢˜åQŒæˆ‘们所è¦ä¿®æ”¹çš„æ˜¯é›†åˆå†…部的¾l“构方å¼åQ?br />
æŸç§¾l“构循环方å¼åQˆdsMeta.å—æ®µ¾l„æˆçš„布局集åˆåQ?br />
show field.viewer
抽离出集åˆï¼Œå®žé™…上是在最大é™åº¦ä¸Šåˆ†ç¦»¾l“构问题和内定w—®é¢˜ã€?nbsp;
¾l“æž„æ˜¯å¯æŠ½è±¡çš„ï¼Œæ˜¯å…·æœ‰ç‹¬ç«‹æ„义的。这ž®±æ˜¯Witrix所æå‡ºçš„é¢å‘ç»“æž„çš„è®¾è®¡è§†è§’ã€‚ä¸æ˜¯å¼ºè°ƒå¯¹è±¡çš„æ‰€è°“业务å«ä¹‰ï¼Œä¸æ˜¯å¼ø™°ƒæŸç§é€šç”¨è¯è¨€åQˆä¾‹å¦‚rubyåQ‰çš„ç‰|´»çš„è¯æ³•结构。在˜q™ä¹‹é—´å˜åœ¨ç€åŽšé‡çš„å…·æœ‰ç‰©ç†æ„义的å¯ä»¥˜q›è¡Œ¾l“构分æžçš„æŠ€æœ¯å±‚ã€?a >http://canonical.javaeye.com/blog/60758 http://canonical.javaeye.com/blog/126467
]]> 从指针到引用 http://www.aygfsteel.com/canonical/archive/2007/12/02/164717.htmlcanonical canonical Sun, 02 Dec 2007 14:14:00 GMT http://www.aygfsteel.com/canonical/archive/2007/12/02/164717.html http://www.aygfsteel.com/canonical/comments/164717.html http://www.aygfsteel.com/canonical/archive/2007/12/02/164717.html#Feedback 2 http://www.aygfsteel.com/canonical/comments/commentRss/164717.html http://www.aygfsteel.com/canonical/services/trackbacks/164717.html
指针是对地å€çš„符å·åŒ–。它所带æ¥çš„第一大好处是使得我们摆脱了对¾l对地倽Iºé—´çš„ä¾èµ–。如åŒNewton½W¬ä¸€å®šå¾‹æ‰€é˜è¿°çš„:物ç†è§„律与所å‘ç”Ÿçš„æƒ¯æ€§åæ ‡ç³»æ— å…³ã€‚åŒæ øP¼Œæ•°å—½Iºé—´ä¸å‘生的的事件与所处的¾l对地å€ä¹Ÿæ˜¯æ— 关的。在½W¦å·åŒ–的方å‘上更˜q›ä¸€æ¥ï¼Œå¦‚果我们专注于指针的兌™”è¯ä¹‰åQŒè€Œæ”¾å¼ƒæŒ‡é’ˆçš„æŒ‡é’ˆ˜q™æ ·çš„æØœæ‚概念,ž®×ƒ¼šå¾—到å…ähœ‰ç‹¬ç«‹ä»·å€¼çš„引用(Reference)概念.
从表é¢ä¸Šçœ‹è“væ¥ï¼Œæ•°å—½Iºé—´åªæ˜¯ä¸€ä¸ªæ— é™åšg展的一¾l´åœ°å€½Iºé—´åQŒæ¯ä¸€åœ°å€å¤„åªèƒ½å˜æ”¾ä¸€ä¸ªæœ‰é™å¤§ž®çš„¼›ÀL•£æ•°å€û|¼Œä¼ég¹Žå®ƒçš„å‡ ä½•å¦æ˜¯è´«ç˜ çš„ã€‚ä½†æ˜¯å› ä¸ºåœ¨è½¯äšg设计ä¸ï¼Œä¸€èˆ¬æ˜¯ä¸è€ƒè™‘å¯Õd€æ—‰™—´çš„。这æ„味ç€åœ¨æ‹¥æœ‰æŒ‡é’ˆçš„æƒ…况下,我们å¯ä»¥“立刻”讉K—®åˆ°æ•°å—空间的ä»ÀL„é¥è¿œçš„地æ–V€‚è¿™¿U超时空的信æ¯ä¼ 递过½E‹ä‹É得我们å¯ä»¥åˆ©ç”?#8220;引用”概念è½ÀL¾çš„æž„å»ÞZ¸€ä¸ªå¤š¾l´çš„表示½Iºé—´ã€‚在é¢å‘对象的技术背景下åQŒx.y.z˜q™æ ·çš„åÅžå¼è¡¨½Cºæš—½Cºç€x,y,zæ˜¯åŒæ—¶å˜åœ¨çš„。当zå‘生å˜åŒ–的时候,通过y.zå’Œx.y的信æ¯ä¼ å¯û|¼Œx对象本èín也å‘生了æŸç§å˜åŒ–ã€?br />
éšç€web技术的‹¹è¡ŒåQŒç‹¬ç«‹çš„状æ€?地倽Iºé—´çš„å˜åœ¨æ€§é€æ¸æˆäØ“¾pÈ»Ÿä¸å¯å›žé¿çš„å‡è®? "åŒæ—¶æ€?的物ç†çº¦æŸè¶Šæ¥è¶Šéš¾ä»¥¾l´æŒ. ç›¸å¯¹è®ø™§„定了物ç†çŽ°è±¡çš„å®šåŸŸæ€? 在数å—空间我们一直忽视了å®?但有‘£çš„æ˜? ¾|‘ç»œä¸Šçš„ä¼ è¾“æ—¶åšgå´è¿«ä½¿æˆ‘们釿–°å‘çŽîCº†"引用"å½¢å¼ä¸‹å¿…ç„¶å˜åœ¨ç€çš„物ç†è¿‡½E? 引用本èínåªæ˜¯æ ‡è®°äº†æŸ¿Uä¿¡æ¯å…³è? òq¶ä¸ä¸€å®šæ„味ç€åŒæ—¶æ€§çº¦æ? òq¶å‘¾~–程领域的所谓的Futureå¯¹è±¡æ˜¯å¯¹ä¼ ç»Ÿå¼•ç”¨æ¦‚å¿µçš„ä¸€¿U有‘£æ‰©å±?
result = obj.callMethod(args) ==> future = obj.callMethod(args)
future对象å¯ä»¥è¢«è‡ªç”׃¼ é€? åªæœ‰å½“实际访问到它的属性的时å€? æ‰ä¼šè§¦å‘时庾U¦æŸ.
]]> é¢å‘集åˆçš„æ¡†æž¶è®¾è®?/title> http://www.aygfsteel.com/canonical/archive/2007/11/25/163048.htmlcanonical canonical Sun, 25 Nov 2007 15:37:00 GMT http://www.aygfsteel.com/canonical/archive/2007/11/25/163048.html http://www.aygfsteel.com/canonical/comments/163048.html http://www.aygfsteel.com/canonical/archive/2007/11/25/163048.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/163048.html http://www.aygfsteel.com/canonical/services/trackbacks/163048.html
在基元结构上应用基础æ“作p(d)˜q™ä¸€å¾®è§‚场景一般情况下是容易ç†è§£åƈ实现çš? 但通常½E‹åºä¸æ‰€å®šä¹‰çš„大é‡è¾¹ç•Œæ˜¯åŸÞZºŽé›†åˆå˜é‡çš?
å› æ¤å¾ˆå¤šä»£ç 都是ž®åŒ…和解包æ“ä½? 在层层嵌套的循环¾l“构深处我们æ‰èƒ½å‘现真æ£å…ähœ‰ä¸šåŠ¡ä»·å€¼çš„åŸºå…ƒ¾l“æž„.
ž®†é›†åˆæ“作æå‡åˆ°¾pÈ»Ÿå±‚,å‡å°‘æˆ–ç®€åŒ–åœ¨åº”ç”¨å±‚éœ€è¦æ˜¾å¼ç¼–制的循环¾l“构是框架设计层é¢éœ€è¦è€ƒè™‘的问é¢?
一个最基本的方法是ž®½é‡å®šä¹‰é€šç”¨çš„åŒæž„æ“ä½? é¿å…æž„é€ ä¸é—´é›†å? 例如å‰åŽåîC¹‹é—´é€šè¿‡json½{‰é€šç”¨å议交æ¢å¤æ‚¾l“构的对è±?
é¿å…定义ç‰ÒŽ(gu¨©)®Šçš„ä¸é—´å¤„ç†è¿‡½E? 一个与之相é…åˆçš„é‡è¦æŠ€æœ¯æ‰‹ŒD‰|˜¯é€šè¿‡¾cÀLŸ¥è¯¢è¯å?æè¿°æ–¹å¼)ç›´æŽ¥æž„é€ ç‰¹å®šçš„é›†åˆ.
例如prototype.jsä¸æä¾›çš„$$('div
div.myclass').each(op)˜q™æ ·çš„å¤„ç†æ–¹å¼æ˜¾ç„¶è¦æ¯”在循环˜q‡ç¨‹ä¸åŸºäºŽç‰¹å®šæ¡ä»¶è¿‡æ»¤è¦æ–¹ä¾¿çš„多.
而在AOPæ“作ä¸åˆ‡ç‚¹çš„集åˆå®šä¹‰æ–¹å¼ä¹Ÿæ˜¯å…¶æä¾›çš„æ ¸å¿ƒä»·å€ég¹‹ä¸€. ä¸Žé›†åˆæ“作相适应的一¿U代ç é£Žæ ¼æ˜¯‹¹å¼è®¾è®¡(stream),
˜q™æ£æ˜¯jQuery试图鼓å¹çš„主è¦äh(hu¨¢n)å€?è™½ç„¶æˆ‘ä¸ªäºø™®¤ä¸ºå®ƒæœ‰äº›èµ°æžç«?. ‹¹å¼è®¾è®¡çš„æ ¸å¿ƒç»“构实际上æ˜?x += dx,
它ä¸éœ€è¦é›†åˆæ˜¯ä¸€‹Æ¡æ€§æž„é€ çš„, 便于支æŒä¸€¿U逿¥éƒ¨åˆ†ä¿®æ£çš„æ¦‚忉|¨¡åž?
ä¸ÞZº†æ”¯æŒé›†åˆçš„éšå¼æž„é€? 我们需è¦ä»¥é€šç”¨çš„æ–¹å¼å®šä¹‰å…ƒç´ 到集åˆçš„组装规åˆ?
在Witrixòq›_°çš„å‰å°jsæ¡†æž¶ä¸æˆ‘们定义了ç”Þq‹¬ç«‹çš„html¾l„äšg到å¤åˆæŸ¥è¯¢æ¡ä»¶çš„æ‹¼æŽ¥è§„则,
定义了由æ¯ä¸ªhtml¾l„äšgçš„æ•°æ®æ ¡éªŒå‡½æ•°åˆ°æ•´ä¸ªformçš„æ•°æ®æ ¡éªŒå‡½æ•îC¹‹é—´çš„¾l„装规则,
定义了由å•个html¾l„äšgæäº¤å‚数到整个formæäº¤å‚数之间的组装规åˆ? 在Witrixòq›_°çš„æ ‡å‡†ç•Œé¢ä¸Š,
框架本èín的编制基于js.query.buildCondition(frmQuery),
js.validate.validateForm(frmUpdate), ajax.addForm(frmUpdate)½{‰å°‘é‡é›†åˆæ“作进è¡?
在ä¸åŒçš„应用场景ä¸? 我们åªéœ€è¦å…³å¿ƒæ¯ä¸€ä¸ªå—ŒDµå¦‚何显½C? æäº¤å“ªäº›å±žæ€? 而由¾pÈ»Ÿè´Ÿè´£ž®†å®ƒä»¬è‡ªåŠ¨ç»„è£…åÆˆåœ¨åŽå°è¿›è¡Œåˆ†‹z? é¢å‘ä¸åŒçš„应ç”?
框架代ç ä¸éœ€è¦åšå‡ÞZ“Q何修æ”? ¼‹®ä¿äº†ç³»¾lŸç»“构的å¯é‡ç”¨æ€?
Witrixòq›_°çš„åŽå°å¤„ç†æ¨¡åž‹ä¸å®šä¹‰äº†å®žä½“化˜q‡ç¨‹, DaoWebActionåŸÞZºŽCRUD½{‰åŽŸåæ“ä½œå®šä¹‰äº†æ‰šw‡æäº¤,
æ•°æ®å¯¼å…¥å¯¼å‡º½{‰å¤åˆçš„ç”šè‡³æ˜¯åµŒå¥—çš„é›†åˆæ“作. 在ä¸åŒçš„应用ä¸? 我们通过修改bizflowæ–‡äšgä¸?lt;action
id="ViewDetail-default">, <action
id="Update-default">½{‰é’ˆå¯¹å•实体的业务规则å³å¯é€‚应ä¸åŒçš„业务场æ™? 而ä¸éœ€è¦äؓ特定的应用é‡å¤ç¼–刉™›†åˆå¤„ç†è¿‡½E?
é¢å‘集åˆ+通用¾l„装规则是Witrixòq›_°è®¾è®¡ä¸é‡‡ç”¨çš„基本设计手法之一,
它ä‹É得我们在一般应用ä¸åªéœ€è¦è€ƒè™‘å•实ä½?å•å—ŒD늉基元¾l“构上å‘生的特定业务, 大大½Ž€åŒ–了¾pÈ»Ÿæž„é€ è¿‡½E?
但是也需è¦è®¤è¯†åˆ°ä»Žä¸ªä½“到集åˆçš„æ‰©å¼?p(d) -> P(D) )是éžòq›_‡¡çš? é›†åˆæ¯”个体的½Ž€å•åŠ å’Œè¦æ›´å¤š,
ä¸ºæ¤æž¶æž„ä¸éœ€è¦ä¿ç•™å¯¹é›†åˆè¾¹ç•Œçš„识别能åŠ? 例如需è¦å…许在数æ®å¯¼å…¥å®Œæˆä¹‹åŽæ‰§è¡Œç‰¹å®šçš„ä¸šåŠ¡è§„åˆ™è€Œä¸æ˜¯ä»…ä»…é’ˆå¯ÒŽ(gu¨©)¯ä¸€æ•°æ®è¡Œæ‰§è¡Œä¸šåŠ¡è§„åˆ?
]]> Witrixæž¶æž„åˆ†æž http://www.aygfsteel.com/canonical/archive/2007/09/23/147641.htmlcanonical canonical Sun, 23 Sep 2007 15:53:00 GMT http://www.aygfsteel.com/canonical/archive/2007/09/23/147641.html http://www.aygfsteel.com/canonical/comments/147641.html http://www.aygfsteel.com/canonical/archive/2007/09/23/147641.html#Feedback 0 http://www.aygfsteel.com/canonical/comments/commentRss/147641.html http://www.aygfsteel.com/canonical/services/trackbacks/147641.html http://canonical.javaeye.com/blog/33824
Witrixæž¶æž„å‘?å?å—åÅžæ€ï¼Œå…¶ä¸å®šä¹‰äº†ä¸‰æ¡ä¸»è¦çš„分界¾U?
1. ‹¹è§ˆå™¨å’ŒæœåŠ¡å™¨ä¹‹é—´é€šè¿‡è¯ä¹‰¾l“构明晰的URLå½¢æˆä¸¤åˆ†¾l“æž„ã€?a _fcksavedurl="http://canonical.javaeye.com/blog/99122">http://canonical.javaeye.com/blog/99122
2. ¾pÈ»Ÿå‰å°è‡›_Žå°å˜åœ¨ä¸€æ¡é¢„制的éžäçR入的信é“. 它维æŒäº†ä¸€¿Uæ— å®³çš„å¯æ‰©å±•结æž?
具体的说,¾pÈ»Ÿä»Žå‰å°js到åŽå°å¤„ç?对于所æœ?为剾~€çš„傿•°æ˜¯è‡ªåŠ¨ä¼ é€’çš„,æ²¡æœ‰è¯†åˆ«å‡ºçš„å±‚å°†è‡ªåŠ¨æŠŠè¿™äº›å‚æ•îC¼ 递下åŽ?¾pÈ»Ÿé€šè¿‡˜q™ä¸€ä¿¡é“实现退化过½E‹ã€‚在
我以å‰çš„æ–‡ç« 䏿›¾¾læŒ‡å‡ø™¿‡åQ?æ¯ä¸€¿Uå¯é€€åŒ–åÅžå¼éƒ½å¯¹åº”å˜åœ¨ä¸€¿Uéžä¾µå…¥æ€§çš„坿‰©å±•设计ã€?a _fcksavedurl="http://canonical.blogdriver.com/canonical/993807.html">http://canonical.blogdriver.com/canonical/993807.html
3. Witrix内置了对于CRUD模型的支æŒï¼Œ 而BizFlow通过¾cÖM¼¼AOP的方法对CRUD模型˜q›è¡Œäº†æ‰©å±•。这使得Witrixçš„æ¨¡åž‹é©±åŠ¨éƒ¨åˆ†åÆˆä¸æ˜¯ä»…仅针对å•表或者å•实体的维æŠ? 而是å¯ä»¥å®žçŽ°ç‰¹å®šçš„ä¸šåŠ¡é€»è¾‘å’ŒCRUDé€»è¾‘çš„æØœæ?
˜q™ä¸‰æ¡åˆ†ç•Œçº¿åˆ†åˆ«è§„范了基¼‹€çжæ€ç©ºé—ß_¼Œå¯¹å·²æœ‰çŸ¥è¯†çš„é‡ç”¨ä»¥åŠé¢å‘未æ¥çš„坿‰©å±•性。在˜q™ç§å¤§çš„å®è§‚¾l“构下,W(xu¨¦)itrix应用了如下技术手ŒD?
1. 对象化。Witrixä¸çš„Jsplet框架以对象的å义æä¾›äº†å¯¹åŽå°çš„状æ€å’Œè¡ŒäØ“½Iºé—´˜q›è¡Œåˆ†è§£çš„基¼‹€æ‰‹æ®µã€?http://canonical.javaeye.com/blog/33873 。Witrix
便‰˜äºŽJsplet对象实现相关性的局域化, 而ä¸éœ€è¦åƒä¸€èˆ¬é¢å‘action的框枉™‚£æ ïL(f¨¥ng)›´æŽ¥è®¿é—®http session˜q™ä¸€å…¨å±€çжæ€ç©ºé—?
å‰å°å‘é€çš„objectName傿•°åŒæ—¶åœ¨ç³»¾lŸçš„ä¸åŒå±‚颿 ‡å®šäº†WebActionå“应函数, Bizé…ç½®, DataSourceMeta元数æ?
Hibernate实体½{‰ä¸€¾pÕdˆ—相关概念, 使得它们构æˆä¸€ä¸ªç»Ÿä¸€çš„æ•´ä½?
2.
æ ‡å‡†åŒ–ã€‚ä¸ŽRESTæž¶æž„é£Žæ ¼¾cÖM¼¼åQŒDaoWebAction规范化了åŽå°å“应事äšg。DaoWebAction上支æŒçš„æ ‡å‡†äº‹äšg有Query,
ViewDetail,Add, Update, Remove½{?
它们构æˆä¸€ä¸ªå®Œæ•´çš„CRUD模型。与RESTä¸åŒçš„æ˜¯åQŒDaoWebActionæä¾›äº†ä¸€ä¸ªç©ºçš„å“应事件BizAction。它相当于是CRUD模型ä¸çš„
é›¶å…ƒæ“作。在BizFlowæ¨¡åž‹ä¸‹ï¼Œå®ƒå°†è¢«æ‰©å±•äØ“ä¸€ä¸ªæ“作å½Iºé—´åQŒä»Žè€Œå®žçŽ°å¯¹äºŽCRUD模型的超‘Šã€‚而在REST模型下所有的扩展æ“作必须ä¾é™„于一个已¾l?
å…ähœ‰å›ºå®šè¯ä¹‰çš„Method上,例如POST. http://canonical.javaeye.com/blog/99122
3. 实体化。在Witrixä¸å……åˆ†å‘æŽ˜äº†ORM技术的能力, 使得å•一业务对象上å¯ä»¥èšé›†åˆ°æŸä¸€èŒƒå›´å†…的所有相关结构信æ?
http://canonical.javaeye.com/blog/111500 .
åŒæ—¶åœ¨DaoWebActionä¸é€šè¿‡EntityFilter机制实现了å•实体化过½E? ˜q™æ„味ç€å‰å°åº”用å¯ä»¥ä¸€‹Æ¡æ€§æäº¤å¤šä¸ªæ‰¹é‡æ“ä½?
åŽå°æ¡†æž¶è´Ÿè´£æŠŠå®ƒä»¬åˆ†è§£äؓ针对å•个实体的一‹Æ¡ç¡®å®šæ€§æ“ä½? 在åŽå°å®žçŽ°æ—¶åªéœ€è¦è€ƒè™‘å•实体的情况å›_¯.
一个简å•çš„ä¾‹åæ˜¯å‰å°æäº¤objectEvent=Remove&id=1&id=2&id=3 ,
WebAction层会为æ¯ä¸€ä¸ªid对应的实体调用BizFlowä¸çš„Remove-defaultæ“作. 实体化是一个éžå¸”R‡è¦çš„˜q‡ç¨‹,
它ä‹É我们å…Ïx³¨çš„æ ¸å¿ƒæˆä¸ºå•实体, æ£æ˜¯å› äØ“æ˜Žç¡®äº†å•å®žä½“ä½œäØ“åŸºæœ¬çš„å…³æ³¨ç‚¹, 我们æ‰å¯ä»¥å¾ç«‹æ›´åР夿‚çš„çŠ¶æ€æœºæœºåˆ¶, 驱动¾pÈ»Ÿçжæ€å˜åŒ?
4. ¾l„äšgåŒ? å‰å°çš„tpl模æ¿å’ŒåŽå°çš„WebActionå…׃ín一个thisObj指针, ¾l“åˆè‡ªå®šä¹‰æ ‡½{¾æœºåˆ? 资æº(js/css½{?½Ž¡ç†æœºåˆ¶½{‰æž„æˆå¯ä»¥é‡ç”¨çš„¾l„äšg¾l“æž„.
5. å置的AOP. BizFlow通过一¿Uç±»ä¼égºŽAOPçš„æ“作对DaoWebActionæä¾›çš„CRUD模型˜q›è¡Œæ‰©å±•,
ä½¿å¾—æ¨¡åž‹çš„èƒ½åŠ›å¾—åˆ°æœ¬è´¨æ€§çš„æ‰©å¼ . ˜q™ç§AOPæ“作与通常æ„义的AOP的区别在äº? ¾~ºçœè¡Œäؓ在默认情况下å‘生, é™¤éžæ˜‘Ö¼¼›æ¢. 通过˜q™ç§æ–¹å¼,
åè{了baseå’Œextension之间的主体地ä½? æ¤å¤–BizFlow所æä¾›çš„ä¸ä»…仅是行为的扩展,å®ƒåŒæ—¶æä¾›äº†å¯¹ç•Œé¢çš„æè¿°.
在å‰å°tpl™åµé¢ä¸é€šè¿‡<ds:BizViewOps/>½{‰æ— 傿•°çš„æ ‡½{¾è°ƒç”¨æ¥å®šä¹‰åµŒå…¥åæ ‡. http://canonical.javaeye.com/blog/34941
ä¸Žä¼ ¾lŸçš„J2EE相比è¾? Witrix表现出很多å˜åŒ?
1. ä¸ä‹É用全局的session, 而是使用局域化的thisObj
2. ä¸å®šä¹‰service层,其功能分解到BizFlowå’ŒHandlerä¸ï¼Œå®ƒä»¬éƒ½ä¸è´Ÿè´£æ—¥å¸¸çš„DAOæ“作。独立的MDA部分负责所有的实体CRUD(Create Read Update Delete)æ“作ã€?br />
3. ä¸å®šä¹‰é¡µé¢èŸ©è½¬è§„则,在å‰åîC‹É用拉模å¼ç›´æŽ¥è¡¨æ˜Žè·Œ™{ç›®æ ‡ã€‚ç»“åˆå‰å°stdPage对象在å‰å°æŽ§åˆ¶èŸ©è½¬ç›®æ ‡ã€‚åÆˆå¯ä»¥åœ¨BizFlowä¸é…¾|®è¦†ç›–的规则åQŒè¿™æ ·å°±å¯ä»¥é’ˆå¯¹ä¸åŒçš„应用场景定义ä¸åŒçš„è·Œ™{规则ã€?br />
4. 䏿˜¯ä¸ºæ¯ä¸ªæ¨¡å? æ¯ä¸ªåº”用场景¾~–制一¾l„新的页é?而是大多数模å—å…±ç”¨å°‘æ•°å‡ ä¸ªæ ‡å‡†é¡µé?
5. ä¸åœ¨ä¸Žç½‘¾lœæ— 关的service层上定义æƒé™å’Œäº‹åŠ¡ç®¡ç†ã€‚Witrix架构下通过URL明确区分了系¾lŸå†…部和外部,
å‰å°è®‰K—®åŽå°æ—¶è°ƒç”¨è€…的全部æ„图是以规范化的形å¼è¡¨è¾¾åœ¨urlä¸çš„.
å› æ¤æƒé™å’Œäº‹åŠ¡ç®¡ç†ä½œç”¨åœ¨WebObject上在概念上也å¯ä»¥è®¤äؓ是约æŸç›´æŽ¥ä½œç”¨åœ¨URLä¸? ˜q™ä¸ŽRESTé£Žæ ¼æ˜¯ç»Ÿä¸€çš?
当然我们也å¯ä»¥è§„范serviceæ–ÒŽ(gu¨©)³•的命åç‰, 但是昄¡„¶è¦æ±‚一¿Uéšæ„性消失是有代ä»ïL(f¨¥ng)š„,
在URL上我们已¾l付å‡ÞZº†ä»£äh(hu¨¢n),ä¸ÞZ»€ä¹ˆè¦åœ¨service上å†ä»˜å‡ºä¸€‹Æ? Witrixä¸Transactionå’ŒAuth的酾|®æ›´åŠ ç›´è§?
å› äØ“è§„èŒƒåŒ–äº†WebObject上的事äšgå“应函数,一般我们也ä¸éœ€è¦è¿›è¡Œç‰¹ŒDŠçš„é…ç½®.
Witrix˜q™ç§è®¾è®¡æ›´åР适åˆäºŽç½‘¾lœè¿™ä¸€ä¸¤åˆ†¾l“æž„çš„ï¼Œæ›´åŠ å……åˆ†çš„åˆ©ç”¨è¿™ä¸€æž¶æž„è¾¹ç•Œæ‰€æä¾›çš„éš”¼›ÀL€?
6. ä¸åœ¨™åµé¢ä¸ä‹Éç”¨å®žä½“çš„å—æ®µå,而是大é‡é€šè¿‡å…ƒæ•°æ®è¡¨è¾„¡¨‹åºæ„图ã€?a _fcksavedurl="http://canonical.javaeye.com/blog/114066">http://canonical.javaeye.com/blog/114066
一般J2EEå¤šå±‚æž¶æž„ä¸‹ï¼Œæ‰€è°“çš„æž¶æž„åˆ†è§£ä¸»è¦æ˜¯å¯¹½E‹åº¾Uµå‘的分解,但是½E‹åº¾l“构斚w¢æ˜¯æ²¡æœ‰æ¨ªå‘分解的。而witrixæž¶æž„çš„ä¸€ä¸ªæ ¸å¿ƒå°±æ˜¯æ¨ªå‘å˜åœ¨ç€
CRUD模型和Biz的分解。在¾pÈ»Ÿçš„æ‰€æœ‰å®žçŽ°è¿‡½E‹ä¸åQŒæ‰€æœ‰CRUDæ“作都剥¼›Õdˆ°MDA模型ä¸ï¼Œè€Œä¸éœ€è¦ä“Q何代ç 编制。典型的,
witrixåŽå°ä»£ç 一般写在handlerä¸ï¼Œå‘½å为handlerè€Œä¸æ˜¯serviceæ˜¯å› ä¸ºhandlerä¸è´Ÿè´£çš„内容和j2eeä¼ ç»Ÿä¸Šçš„
service有所ä¸åŒåQŒä¸€èˆ¬serviceæ€ÀL˜¯è¦è´Ÿè´£æŸä¸ªå®žä½“çš„CRUDæ“作åQŒå¤§é‡çš„findxxx代ç 。一般æå€¡çš„æœ€ä½?j¨©ng)_®žè·‰|˜¯å®žçްæŸä¸ªé€šç”¨çš„基¾c»ï¼Œæ‰€
有service都ç‘ô承该基类获得CRUD能力。但是在Witrixæž¶æž„ä¸ï¼Œæ ÒŽ(gu¨©)œ¬æ²¡æœ‰˜q™ä¸€éœ€è¦ã€‚Handleråªè¦å®Œæˆè‡ªå·±ç‰¹å®šçš„功能,它丘q½æ±‚æ“作概念
在其本èín的完整性。没有CRUD,
handler没有æ„义。但是handler之所以有æ„ä¹‰æ˜¯å› ä¸ºå®ƒæä¾›äº†CRUD之外的æ“作。当CRUDæˆäØ“¾pÈ»Ÿä¸€¿U自动进行的背景æ“作æ—Óž¼Œæˆ‘们ä¸å†éœ€è¦?
明确æ„识到它的å˜åœ¨ã€?br />
我们需è¦è®¤è¯†åˆ°æˆ‘们最¾lˆæ‰€éœ€è¦çš„东西å¯èƒ½ä¸æ˜¯è§„æ•´¾l“æž„çš? 它å¯èƒ½è¦æ±‚对于æŸä¸ªè§„整结构进行剪è£åÆˆå¢žè¡¥é™„åŠ å…ƒç´ .
但是˜q™æ ·çš„规整结构ä¸åº”åªå˜åœ¨äºŽæˆ‘们的惌™±¡ä¹‹ä¸åQŒç›¸åº”的剪裘q‡ç¨‹åº”该是å¯ä»¥å¢žé‡è¿›è¡? å夘q›è¡Œçš? 在Witrixòq›_°ä¸ï¼Œ 基本的一¿U图景å˜åŒ–是:
Witrixä¸ä¸å†éœ€è¦ä»Žå¤´å¼€å§‹æž„é€ ç»“æž? 而åªè¦æŒ‡å®šå½“å‰ä¸šåŠ¡å’ŒèƒŒæ™¯æ¨¡åž‹ä¹‹é—´çš„å·®å¼‚éƒ¨åˆ?
在Witrix䏿‰€å†™çš„ä¸šåŠ¡ä»£ç æ˜¯å¯¹æ ¸å¿ƒæ¨¡åž‹çš„æ‰©å±•。这ä¸ä»…仅是概念上的åQŒè€Œæ˜¯å®žé™…体系架构上精¼‹®çš„体现。CRUDä½œäØ“ç‹¬ç«‹çš„æ¨¡åž‹å¸æ”¶äº†¾pÈ»Ÿä¸å¤§é‡çš„å?
åŒ–ã€‚æ•´ä¸ªæ¨¡åž‹å†…æ ¸æ˜¯é‡‡ç”¨é€šç”¨æ–¹å¼å€ŸåŠ©meta实现功能åQŒåÆˆä¸æ¶‰åŠåˆ°ç‰¹å®šäºŽä¸šåŠ¡çš„¾c…R€‚对于那些我们已¾l掌æ¡çš„知识,
Witrixæä¾›äº†è¶…‘Šå¯¹è±¡ç‘ôæ‰?AOP和组仉™‡ç”¨çš„¾l“æž„æŠ½å–æ‰‹æ®µ, 使得知识å¯ä»¥½EÏx¥¿U¯ç¯.
æ•°å¦ä¸å˜åœ¨ä¸¤¿U基本的分解方å¼åQ?一¿Uæ˜¯åŠ æ€§åˆ†è§?(a,b) + (c, d) => (a,b,c,d)åQ?å¦ä¸€¿U是乘性分è§?
(a,b) X (c, d) => (ac,bc,ad,bd)åQ?å®ƒä¹Ÿå¯¹åº”äºŽå¼ é‡?Tensor)˜qç®—. 在群è®?Group
Theory)ä¸ï¼Œç›´ç§¯å¯¹äºŽå¤æ‚性的化简臛_…³é‡è¦åQŒå®ƒçš„é‡è¦æ€§è¦˜qœåœ¨åŠ å’Œä¹‹ä¸Šã€‚å®žé™…ä¸ŠAOPæ“作¾cÖM¼¼äºŽç›´¿U¯åˆ†è§£ï¼Œ åªæ˜¯å®ƒçš„能力ž®šæœªå¾—到充分的探索ã€?
在Witrixä¸ï¼Œbiz的作用在感觉上很象是陪集(coset)˜qç®—åQšCURD *
biz。ä¸åŒçš„bizä½œç”¨åˆ°åŒæ ïL(f¨¥ng)š„CRUD模型上äñ”生ä¸åŒçš„æ“ä½œé›†åˆåQŒè€Œæ‰€æœ‰biz¾l„æˆçš„é›†åˆæž„æˆç‹¬ç«‹çš„æ•´ä½“ã€?nbsp;
Witrixòq›_°ä¸ä½œä¸ºå†…æ ¸çš„MDAéƒ¨åˆ†é¦–å…ˆæ˜¯ç‰©ç†æ¨¡åž‹é©±åŠ? è€Œä¸æ˜¯é€»è¾‘模型或者对象模型驱åŠ?
æˆ‘ä»¬é€šè¿‡åœ¨ç‰©ç†æ¨¡åž‹ä¸Šæ ‡æ³¨çš„æ–¹æ³•æ¢å¤éƒ¨åˆ†å¯¹è±¡æ¨¡åž‹çš„ä¿¡æ¯, 但是我们òq¶ä¸è¯•图把整个èÊYä»¶å¾ç«‹äؓ模型. 所建立的仅仅是整个½E‹åºæ¨¡åž‹çš„内æ ?
http://canonical.javaeye.com/blog/29412 一般业内鼓å¹çš„æ‰€è°“MDAæˆåŠŸçš„å…³é”®æ˜¯è¦æé«˜æŠ½è±¡å±‚‹Æ¡ã€?
但是陪集是更抽象å—ã€?æ£è§„å群更抽象å—ã€?å®ƒä»¬åªæ˜¯¾pÈ»Ÿçš„æŒ‡æ ‡æ€§è¡¨å¾ï¼Œä½¿å¯¹ä¿¡æ¯çš„distill, 是更å®ÒŽ(gu¨©)˜“ç†è§£çš„一个侧é¢è€Œå·²,
æŠ½è±¡æ€§åÆˆä¸æ˜¯ä¸€ä¸ªçœŸæ£çš„ç›®æ ‡ã€‚å¾ˆå¤šæ—¶å€™æˆ‘ä»¬éœ€è¦çš„æ˜¯æŠŠ¾pÈ»Ÿé™ç»´åˆ°æŸä¸ªå½Iºé—´ä¸ï¼Œå½¢æˆä¸€¿Uå¯æŽ§æ€§ã€?但是˜q™ä¸ªåç©ºé—´åÆˆä¸ä¸€å®šæ˜¯æ›´æŠ½è±¡çš„ã€?br />
¾Ÿ¤ä½œä¸ºåŸºæœ¬çš„代数¾p»ï¼Œä¸€ä¸ªæœ¬è´¨ç‰¹å¾æ˜¯å…ähœ‰é€†å…ƒã€‚Witrixçš„MDA䏿˜Ž¼‹®å®šä¹‰äº†é€†å…ƒ¾l“æž„åQŒå³ç•Œé¢ä¸Šçš„å…ƒç´ empty =
buttonA + (-buttonA)åQŒè¿™ä¸€åˆ†è§£å…¬å¼åº”用到åŽå?OpA = Update * (-Update) *
OpA。å‡è®¾æˆ‘们已¾lå¾ç«‹äº†¾l“æž„X, 现在需è¦å¾ç«‹ä¸€ä¸ªä¸ŽX略有ä¸åŒçš„结构Y
X = a + b + c
Y = a + d + c = (a + b + c) - b + d = X - b + d
虽然Y的两¿Uæž„é€ æ–¹å¼åœ¨æ•°å¦ä¸Šæ˜¯½{‰äh(hu¨¢n)的,
但在物ç†ä¸Šåƈä¸ç‰ä»—÷€‚第一¿Uæ–¹å¼å¯¹åŽŸæœ‰¾pÈ»Ÿ˜q›è¡Œåˆ†è§£åŽå†¾l„装åQŒè€Œç¬¬äºŒç§æ–¹å¼æ²¡æœ‰æ‰“ç ´åŽŸæœ‰çš„ä¸œè¥¿ï¼Œä¸éœ€è¦æ‹†åˆ†ã€‚拆分æ€ÀL˜¯å¯èƒ½å˜åœ¨é—®é¢˜çš„,æ£å¦‚ä½ æŠŠæ‰€æœ‰ç”µ(sh¨´)è„‘é›¶
件拆装下æ¥å†è£…上很å¯èƒ½ä¼šå‘çŽ°å¤šå‡ºå‡ ä¸ªé›¶äšg。一般情况下½W¬äºŒ¿Uæ–¹å¼çš„æž„徿ˆæœ¬è¦ä½Ž. 特别是当一切都¾U ç¼ åœ¨ä¸€èµïL(f¨¥ng)š„æ—¶å€?
一¿U细¾_’度的逆元¾l“构对于一¿U试å›ùN‡ç”¨çš„¾l“构是éžå¸¸å…³é”®çš„.
å¯é‡ç”¨æ€§çš„éšœç¢ä¸ä»…仅是æ¥è‡ªäºŽæ— æ³•è¿½åŠ æ–°çš„åŠŸèƒ½ï¼Œå¾ˆå¤šæ—¶å€™ä¹Ÿåœ¨äºŽæ— æ³•å±è”½åŽŸå…ˆå·²ç»æä¾›çš„åŠŸèƒ½ã€‚ç›®å‰æ‰€æœ‰çš„设计原则都未能适时识别出逆元的é‡è¦æ€§ã€‚所有的è®?
计教æ¡å…¶å®žæ‰€æŒ‡çš„æ–¹å‘éƒ½æ˜¯åŠ å’Œ, 如何分解出更ž®çš„¾l„å…ƒ, å¦‚ä½•æŠŠå®ƒä»¬åŠ å’Œåœ¨ä¸€èµ? å¦‚ä½•ä»Žç»†éƒ¨å¼€å§‹è¿›è¡Œé‡æ–°æž„å»?
è€Œä¸æ˜¯è¯´ä¾èµ–于现有已¾låÅžæˆçš„å®è§‚¾l“æž„, 如何˜q›è¡Œ¾l†ç²’度的调整. 所谓的AOP技术æ€è€ƒçš„关键点也在于如何¾l™ç³»¾lŸå¢žåŠ åŠŸèƒ?
很少有äh惛_ˆ°åœºæ™¯æ˜¯äØ“¾pÈ»Ÿå‡å°‘功能òq¶æŠŠ˜q™ç§æ¦‚念大规模æ£å¼åº”用的, 虽然说AOPå·²ç»åœ¨æŸ¿U程度上å…ähœ‰äº†è¿™¿U能åŠ?
但是真æ£åº”用它ä»ç„‰™œ€è¦å¯¹AOP˜q›è¡Œ˜q›ä¸€æ¥çš„è¯ é‡Š. 当然åQŒçŽ°åœ¨çš„è½¯äšg业连基本¾l“æž„çš„æž„é€ é—®é¢˜éƒ½æ²¡æœ‰å®Œå…¨æžæ¸…æ¥? æ›´åˆ«ææ‰€è°“结构稳定性的问题äº?
从物ç†ä¸Šè¯ß_¼ŒY = X - b +
d的分解方å¼å…·æœ‰ç‰¹ŒDŠçš„æ„å‘³ã€‚å¦‚æžœæ²¡æœ‰é€†å…ƒåQŒæˆ‘们必焉™œ€è¦åˆ†è§£ã€‚ä½†æ˜¯å¦‚æžœå‘æŽ˜äº†èƒŒæ™¯˜q™ä¸€æ¦‚念åQŒåœ¨é€†å…ƒ˜qç®—ä¸‹ï¼Œå¯¹èƒŒæ™¯ä¸æ˜¯åˆ†è§£è®©å…¶æˆä¸ºå¯è§çš„部分åQŒè€Œæ˜¯é‡‡ç”¨
˜q½åŠ çš„ï¼Œå¢žåˆ çš„æ–¹æ³•å¯¹èƒŒæ™¯¾l“æž„˜q›è¡Œä¿®æ£åQŒåˆ™æˆ‘们有å¯èƒ½åœ¨æ²¡æœ‰å®Œæ•´èƒŒæ™¯çŸ¥è¯†çš„æƒ…况下åQŒç‹¬ç«‹çš„ç†è§£å±€éƒ¨å˜åŒ–çš„¾l“构。å³èƒŒæ™¯æ˜¯é€æ˜Žçš„,知识æˆäؓ局部的ã€?
Witrix试图æä¾›çš„一¿U图景是永远åªå†™ä»£ç 片æ–åQŒè€Œæ‰€æœ‰çš„代ç 片斾l„åˆåœ¨ä¸€èµ·åˆæž„æˆä¸€ä¸ªå¯ç†è§£çš„æ•´ä½“。这个整体å¯ä»¥ç‹¬ç«‹ç†è§£ï¼Œä¸éœ€è¦é¢å¤–çš„¾l“æž„å…ƒç´ ã€?
Witrix架构所˜q½æ±‚的是在ä¸å®Œå…¨ä¿¡æ¯ä¸‹å¾æ¨¡ï¼Œä¸è¿›è¡Œæ•´ä½“徿¨¡ã€‚整体模åž?+ 䏿–å˜åŒ–的局部修æ?æž„æˆ
最¾lˆæ¨¡åž‹ã€‚åã^å°æŠ€æœ¯çš„ç›®æ ‡æ˜¯è®©ä¸€åˆ‡åº”è¯¥å‘生的自动å‘生åQŒè®©ä¸€åˆ‡ä¸è¯¥å‘ç”Ÿçš„æ— æ³•å‘ç”Ÿã€‚è¿™ä¸€æ¨¡åž‹çš„æž„å»ºåÆˆä¸æ˜¯trivial的,在概念和实现斚w¢éƒ½è¦ä½œå‡ºå¾ˆå¤š
的努力�br />
题外åQ?br />
今天ä¸åˆå‚åŠ åŒå¦çš„婚½C? å¸é—´å’Œä¸€ä¸ªä¸ŽåŒæ–¹æœ‰äº›æ¸Šæºçš„åŒå¦è°ˆåˆ°ezOne的现çŠ? å¤§è‡´çš„è¯„è¯æ˜¯: 垃圾, 自己äºÞZ¹Ÿä¸ç”¨. 嬿¥ä¹Ÿè®©äººæœ‰äº›æ„Ÿå? ä¸å›½åŽŸåˆ›çš„æŠ€æœ¯æ€ÀL˜¯‹Æºéª—的代åè¯, ˜q™ä¸€æ–言ä¸åº”æ€ÀL˜¯å¾—到è¯å®ž.
]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º
µÂ±£ÏØ |
ÀË¿¨×ÓÏØ |
ãôºéÏØ |
ÓÀÐËÏØ |
¶«ÀöÇø |
Î÷ÁÖÏØ |
ÖêÖÞÏØ |
´óÐËÇø |
ÁÙ¸ßÏØ |
ÓñÁÖÊÐ |
Ìì¶ëÏØ |
´óÎòÏØ |
³ö¹ú |
Âé½ÏØ |
³±°²ÏØ |
·ÚÎ÷ÏØ |
ÈÊÊÙÏØ |
³¤·áÏØ |
»ÝË®ÏØ |
ͼƬ |
´óÌïÏØ |
½±±Çø |
¹þ¶û±õÊÐ |
ÆÎÌïÊÐ |
ÀϺӿÚÊÐ |
ÄÏÍ¶ÏØ |
¶ë±ß |
Ë«½ |
ºÚºÓÊÐ |
·ð¸ÔÏØ |
¹®ÒåÊÐ |
Ë«ÇÅÇø |
ÑÓ°²ÊÐ |
´ó×ãÏØ |
ÄÚ»ÆÏØ |
Ð˹úÏØ |
̨¶«ÊÐ |
²ý½ |
·ï»ËÏØ |
Áú½ÏØ |
Ä«ÍÑÏØ |