<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的Blog我做主^_^

    走向一條通往JAVA的不歸路...

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      64 隨筆 :: 68 文章 :: 77 評論 :: 0 Trackbacks
    自己感覺不錯的一篇文章,粘過來與看到的人共享<來自J道>,也算為J道做點貢獻吧,呵呵
    hlayy

    發表文章: 45
    注冊時間: 2006年08月03日 11:29

    誰能寫個“新聞發布系統”的面向對象分析和設計的過程? 發表: 2006年09月02日 22:27 回復
    請大家談談,拿到這樣一個系統,是怎么進行分析和設計的?怎么處理類與類之間的層次,和通信。

    比如把新聞發布系統分為話題:注冊登陸、新聞發布、權限管理。

    在“注冊登陸”系統中怎么分析?其中有表單類,那么新填寫的注冊、已經填寫的注冊、已經履行的注冊,這些是當成表單類的子類還是表單類的對象,該怎么處理和設計?

    hlayy

    發表文章: 45
    注冊時間: 2006年08月03日 11:29

    Re: 誰能寫個“新聞發布系統”的面向對象分析和設計的過程? 發表: 2006年09月02日 22:56 回復
    按照面向對象分析,其過程應該是對象1:未填寫的注冊表與對象2:填寫后的注冊表進行交互

    但是實際上,他們并沒有通過對象間消息的傳遞,而更多的通過在注冊表類中增加了一個“填寫”

    的方法完成?這樣做會不會給系統整體上的架構增加復雜的成分?

    我們一般只做如下設計:

    注冊表類

    屬性:字段

    方法:新建,填寫,刪除,修改,添加,撤消


    NEW 一個對象,然后它就是一張注冊表

    NEW 一個對象,然后它并不是一張未填寫的注冊表,雖然未填寫的注冊表是它的子集

    注冊表和為填寫的注冊表都屬于注冊表類,但是一個NEW,卻不會出現兩種對象

    男人和女人,都屬于人類,但卻不能直接從人類進行對象的實例化?

    人類的一個對象實例是人,它NEW不出男人或者女人,只有在人類下面細分為男人類、女人類,再NEW才會出現。

    這些東西說明了什么,還是你們采用了更科學的方法呢?

    hlayy

    發表文章: 45
    注冊時間: 2006年08月03日 11:29

    Re: 誰能寫個“新聞發布系統”的面向對象分析和設計的過程? 發表: 2006年09月02日 23:02 回復
    我只是把這問題提提,討論討論,雖然我知道把“注冊類”做為一個整體而不分的那么清楚,設計起來,其實更簡單。

    junglesong

    發表文章: 36
    注冊時間: 2006年06月07日 14:05

    Re: 誰能寫個“新聞發布系統”的面向對象分析和設計的過程? 發表: 2006年09月04日 11:39 回復
    僅僅是新聞發布不如采用新浪的方式-動態生成靜態頁面.

    banq

    發表文章: 7507
    注冊時間: 2002年08月03日 17:08

    Re: 誰能寫個“新聞發布系統”的面向對象分析和設計的過程? 發表: 2006年09月04日 12:07 回復
    >注冊登陸、新聞發布、權限管理

    “注冊登陸和權限管理”已經有通用解決方案,當然,復雜的數據相關權限ACL需要在業務分析中提及。

    下面就是分析“新聞發布”,這個我已經在JdonFramework實現案例中提及,大概模型類圖如下:

    hlayy

    發表文章: 45
    注冊時間: 2006年08月03日 11:29

    Re: 誰能寫個“新聞發布系統”的面向對象分析和設計的過程? 發表: 2006年09月05日 21:50 回復
    以前自己也做過一個生成靜態頁面的新聞發布,我總覺得自己學的程序在架構上很混亂,所以想看看你們是怎么架構的。BANQ給的那個圖,我和自己的設計比了一下。我是個初學者,我以前的設計是把“新聞”當作一個類,在BANQ的設計中,關聯了兩個更細的類,比如其中有一個是新聞類型類。我想他這個應該是把變化的東西分離了出來吧?

    順便問一下“面向對象分析”的方法。使用UML進行統一建模,可是UML是建模的語言,建模的過程有什么方法呢?在J2EE系統中,是不是把系統分N層次,然后找出每層中的類和對象并建模?在別的系統中呢?還有沒有什么方法,有什么相關的書籍沒?

    banq

    發表文章: 7507
    注冊時間: 2002年08月03日 17:08

    Re: 誰能寫個“新聞發布系統”的面向對象分析和設計的過程? 發表: 2006年09月06日 11:44 回復
    建模現在采取Evans DDD領域建模設計,領域建模DDD屬于XP方式,至于RUP建模,我覺得恐怕遲早會淘汰吧,或者說應用范疇越來越小。

    hlayy

    發表文章: 45
    注冊時間: 2006年08月03日 11:29

    Re: 誰能寫個“新聞發布系統”的面向對象分析和設計的過程? 發表: 2006年09月06日 13:40 回復
    果然被淘汰了,和我想的差不多,原因是我覺得它太復雜了,我喜歡那種一看上去就清晰簡單的東西,而且要容易理解。一個好的架構應該可以抽象成現實生活中有的“東西”,這樣理解起來就容易多了。

    我學“面向對象設計”的時候,發現一個問題,那就是對象的“方法”問題,比如對象要是人的話,他有一個“提交”,或者是“檢查”的方法,那是很容易理解的。但是比如有個“表單類”,其中他的方法“添加”。我覺得它這個方法是“被動”的,因為表單自己并不會“添加”,施加給它這個“動作”,或者是“方法”的,應該是個人。所以我認為,我們建模的時候為什么不把一個過程抽象為現實生活中的過程呢,也許它的性能會低一些。雖然我還沒有具體去實踐,也還沒有學過什么J2EE,但是我把我的想法說說:

    比如架構一個系統,要涉及到權限,要涉及到功能的“開”,“關”,最基本的做法,我們做每一個操作之前,總是要查詢“這個功能被系統打開了或者是關閉了沒”,“我們是不是有這個權限”,很自然的,比如是個注冊系統,我們在執行“添加”這個動作之前,都必須用到兩個方法,第一個檢查這個“注冊”功能是不是正被開放使用,第二個,我們是不是有這個“權限”進行“添加”操作?那這兩個類,我們應該放在哪個類里面去呢,也許我們可以把他分成兩個類(權限類,功能類),然后在“注冊類”里面加上這兩個方法,在執行“添加”之前操作他們。我覺得這樣增加了他們之間的“耦合”,也顯得很混亂,在一個類里面執行這些操作,是不是把“注冊類”這個靜的東西動態了?執行這些操作的應該是個人才對啊?就象在現實世界中,我們填寫完一張注冊表之后,我們并不會直接去“檢查”,“添加”他,我們會把他交個一個這方面的人,然后這個人會檢查,我是不是有這個權限?我填寫的完整沒有?然后他跟“注冊類”打交道。也就是,用戶――>“負責注冊模塊的人”――>注冊類。這樣打交道。

    權限和功能問題:我們要進行操作時,先找個負責這個操作的人,然后他告訴我,比如,“這個功能被關閉了”,“你的操作已經成功了”,之類,我們不直接跟類打交道,因為我們不能充當每方面的“專家”

    這樣做的好處,松耦合,也省的每次執行操作之前都要在方法里面嵌套方法,我們可以等用戶登陸的時候,就找到那個相關的人,把系統的功能開放了哪些和這個人可以進行的操作記錄在表里,進行操作的時候就不必再查數據庫了,應該更快些?然后用戶退出的時候,就刪除相關的記錄?

    我覺得MVC模式里面的C,有時候他就充當了“這個人”的角色,但其實這個人可以分的更細些。

    這些問題我也是剛想的,你們的想法是?或者,說說這樣做的缺陷

    hlayy

    發表文章: 45
    注冊時間: 2006年08月03日 11:29

    Re: 誰能寫個“新聞發布系統”的面向對象分析和設計的過程? 發表: 2006年09月06日 13:53 回復
    我覺得軟件這東西,只會越來越容易理解,越來越能用現實中的東西去抽象。復雜的東西,最后都會被淘汰,我看你那DDD,失血模型,我一看就有點頭昏,應該也會被替代掉。

    hlayy

    發表文章: 45
    注冊時間: 2006年08月03日 11:29

    Re: 誰能寫個“新聞發布系統”的面向對象分析和設計的過程? 發表: 2006年09月06日 23:38 回復
    我用我的理論架構一個“新聞發布系統”,如下

    我把“新聞發布系統”當成一個公司,系統的架構圖就是:

    用戶(操作者)――>檢查員(檢查操作者所用的功能是否開放中,操作者的權限是否夠,操作者是否登陸)――>業務員(執行“專業”的業務,例如“添加”,“修改”,“刪除”)

    我可以把“檢查員類”定義成一個抽象類,里面比如說有個檢查權限的方法,然后實現它的類就可以是“新聞權限檢查員”,“登陸權限檢查員類”,你可以選擇一個成員對應一個實際的靜態的類(比如注冊表權限檢測員對應注冊表類),也可以用一個人類對應多個靜態類。

    操作者跟業務員交流,業務員跟熟悉的業務交流,這就是我的架構的實質。這樣可行嗎?我討厭很多類,關系又很復雜,搞又搞不清楚,用“業務員”跟“業務”這樣的思想行得通么?請指教

    banq

    發表文章: 7507
    注冊時間: 2002年08月03日 17:08

    Re: 誰能寫個“新聞發布系統”的面向對象分析和設計的過程? 發表: 2006年09月08日 12:39 回復
    >權限和功能問題:我們要進行操作時,先找個負責這個操作的人,然后他告訴我,比如,“這個功能被關閉了”,“你的操作已經成功了”,之類,我們不直接跟類打交道,因為我們不能充當每方面的“專家”

    >用戶(操作者)――>檢查員(檢查操作者所用的功能是否開放中,操作者的權限是否夠,操作者是否登陸)――>業務員(執行“專業”的業務,例如“添加”,“修改”,“刪除”)

    非常不錯,就是這個意思,現在我們討論下一步,如何使用代碼實現“檢查員”和“業務員”分離?這是設計問題,這個實現有多個方式:

    1. 代理模式,使用權限代理人,這是Jive實現的原理,可看看它的源碼,缺點是,一個檢查員對應一個業務員,如果我們業務員有100個,檢查員就是100個,很瑣碎?而且檢查員也是分類的,如有的檢查員都屬于是A權限檢查,有的都屬于是B權限檢查,如果A權限變化,涉及多個檢查員修改,不利用權限拓展修改了。

    2.使用動態代理直至AOP,在AOP中有一個角色叫Advisor,它實際就是一個檢查員的意思,通過Advisor,我們可以通過配置設定將Advice或攔截器跟住哪個業務員。

    以上原理如果你要看源碼,可以瞧瞧JdonFramework的Message源碼,檢查員配置是通過配置實現的,與業務分離了,更深入的權限可以參考JiveJdon3。當然與JdonFramework同列SUN公司企業應用目錄的appfuse也是一個范本,使用Spring+Acegi實現,實現起來比較復雜,而且功能演示就那么一點點,你可以下載看看。

    你前面oo思路是正確的,就應該是這樣符合我們思考習慣的思路,Evans DDD不是將這個問題復雜化,而是繼續引導走下去,你的思路只是分析,如果設計實現呢?DDD提供了建模實現的途徑,針對很多問題進行了討論,因為權限問題已經成為通用的組件框架技術,所以在Evans DDD中并沒有談及權限,而是討論各種不同復雜的業務系統,這是正確的。

    雖然我們具備OO思考習慣,因為我們經歷和經驗問題,可能覺得DDD復雜,那是因為我們的原因,而不是理論的原因,有時必須搞清楚這個關系,才能判斷這個理論是不是曇花一現。

    Martin Fowler等一些OO專家著作的PoEAA,原來我批判其操作性不夠,講得好聽,實現起來難做,包括其分析模式,還不如四色原型方便,但是DDD在這方面邁出了探索,講這些包括我們得GoF設計模式付諸于建模實踐,最后我們得設計精華濃縮在OO模型上,這是令人激動的。

    hlayy

    發表文章: 45
    注冊時間: 2006年08月03日 11:29

    Re: 誰能寫個“新聞發布系統”的面向對象分析和設計的過程? 發表: 2006年09月09日 15:30 回復
    您說的是有一定道理的,呵呵,我畢竟是個初學者。

    DDD我沒有深入研究過,我覺得這方面的資料書籍根本不怎么找得到,在您的站點里面也就幾篇相關的文章。

    我現在也很郁悶,有很多東西我都想好好的把它研究一下。但是這個和生活真是矛盾,我是軟件學院畢業的,還是2年的那種,本來可以升本,但自己不愿意,也不想給家里造成很大的經濟負擔,所以放棄了。

    在大學兩年里,我根本就沒怎么學。JSP,JAVA也就學了半個學期。我現在會的也就是三層的MVC:JSP+JAVABEAN+SERVLET。根據我在家呆了這段時間以來,我看了很多書,“設計模式”,“重構”,“AJAX,”,“SPRING”,“EJB”等太多了,這些都只是大概的了解了一下。

    我覺得搞應用是搞應用,現在多少人又了解框架的原理,現在開發做網站的是搞二次開發的,用熟了那些框架基本上就行了。(雖然懂了原理可以更好的做開發)了解原理的人大多數不是成“架構師”那就是在開發“框架”了吧。兩個不同的工種。

    賺錢和搞技術是兩碼事,這個物欲橫流的時代,搞技術但是沒錢,又有多少人能靜得下心來?

    我個人來說,真想把他們的應用和原理都研究下,可是還得找工做,我現在是不是該先放下原理的東西,把應用學會呢?

    根據我分析,現在建站點,絕大多數的時候是需要用框架的,他們更容易快速快發,也更容易維護,擴展等。(關鍵的地方是框架之間的搭配吧?)

    可我是先學J2EE好,還是學“Struts”,“JDON”之類的輕量級的框架好呢?我本來打算先學J2EE的,可這樣的話,時間是不是要很久?

    真搞不懂,象我這樣的人才,怎么連工作都找不到……,真郁悶。哪位大哥大姐幫忙推銷一下,呵呵,先謝謝了。

    hlayy

    發表文章: 45
    注冊時間: 2006年08月03日 11:29

    Re: 誰能寫個“新聞發布系統”的面向對象分析和設計的過程? 發表: 2006年09月09日 16:15 回復
    另外,“權限”我沒有深入的思考過,我不明白你說的100個業務員,需要100個檢查員是什么,權限的主體內容就是“資源”,這個“資源可以有很多不同的操作”,例如“可讀”,“可寫”,“只讀”等。權限系統做到極至了,那也就是對資源的細化。細化到一個類,一個對象或者一個方法,一個變量。細化的程度不同,復雜程度自然不同。我覺得就是(String “操作”,Table “資源表”),一個操作,一個是“資源表”。比如一個人要做注冊表的添加操作(String “注冊表的添加操作”,Table “資源表”),那么檢查員,找到資源“注冊表的添加操作”,然后我們就可以查出誰能操作它,一個用戶,或者一個組,或者幾個組,他們之間用“或”關系,只要是其中的一個,就有權對它進行操作?

    理論上來說,資源可以是個“樹”狀結,例如“注冊表的添加操作”,它是不是可以是資源“注冊表”下面的節點。我覺得這樣做的關鍵是,你要知道你現在在進行什么樣的操作,并把它帶進檢查的方法(String “操作”,Table “資源表”)。


    還有,資源的嵌套問題,就是說,你有權訪問“注冊表”這個資源,是不是就能進行“注冊表”資源下的所有的資源的操作?我覺得要是你每次都能帶一個你正在進行的“操作”進那個方法,那這個就不重要了,因為,只要進行“操作”,你就還得重新查一次“資源”。

    簡化這個模式:你并不一定對每個資源都要進行權限控制吧,那樣,這個“資源”也許會大到你不想要的程度,你可以把你想要控制的“那部分”,放在這個“資源”中?

    關于操作者(進行操作的這個人),他可能是一個單獨的角色,也可能是一個組,所有的操作者,都讓一個檢查員去進行檢查,這個“檢查員”沒有子類。

    如果你是這樣的一個模塊派一個檢查員,一個模塊做為一個資源,那樣是不是更復雜了,但是也可以,因為檢查員是并行的,也就是說,你進行注冊表的操作,總不至于叫新聞模塊的檢查員去檢查吧?然后資源那部分,再建個表就是了。(樹狀結構)

    這樣的想法會最自然的想法了,現實生活中不也是這樣么,檢查員必須知道操作員,對資源進行了什么樣的操作,他才能做出他有沒有權利的判斷?

    我的模型的難處就在于,你要傳入你正在進行的“操作”,這個問題實現起來好象有點難度,可以在表現層,提交一個表單的時候順便當參數一樣,傳一個“操作”?

    大家可以再討論討論。BANQ,要不我去你那幫你公司掃地好了,要是你做我師傅,那我肯定不要幾年就能有所建樹了。

    hlayy

    發表文章: 45
    注冊時間: 2006年08月03日 11:29

    Re: 誰能寫個“新聞發布系統”的面向對象分析和設計的過程? 發表: 2006年09月09日 16:20 回復
    我們可以對“會員”進行管理,添加,修改,刪除等,那為什么我們不可以對“資源”進行管理,規定哪些“資源”可以被哪些人操作,我們甚至可以進行“資源”的添加修改刪除,就想,一個倉庫,我們新進一批產品的時候,不是也要對這些“資源”進行登記么?

    然后再根據實際的情況簡化這個模型,要不我就不知道計算機短時間內,能不能有那個運算量了

    banq

    發表文章: 7507
    注冊時間: 2002年08月03日 17:08

    Re: 誰能寫個“新聞發布系統”的面向對象分析和設計的過程? 發表: 2006年09月14日 18:34 回復
    >那為什么我們不可以對“資源”進行管理,規定哪些“資源”可以被哪些人操作,我們甚至可以進行“資源”的添加修改刪除

    是可以這樣,資源使用一個通用的樹組件來完成,如果再結合角色的樹結構,它們之間的對應是靈活的,而且是分離的,都可以實現。

    billywxy

    發表文章: 19
    注冊時間: 2003年11月07日 08:08

    Re: 誰能寫個“新聞發布系統”的面向對象分析和設計的過程? 發表: 2006年10月21日 12:49 回復
    1、如果你需要讓網友幫你分析你的系統,請清楚詳細描述你的問題域。
    2、我建議新人從傳統的面象對象的分析、設計做起。在完全掌握的基礎上,再去學習XP的一些方法。

    傳統面向對象分析設計建議考慮以下過程:
    1、整理詞匯、用例(用例的方法參見“編寫有效用例”一書)
    2、系統順序圖、領域模型、系統分析模型(只包括分析類和他們之間的關系)
    3、架構設計,包括:部署圖、系統架構包圖、架構方法設計(權限,事務(業務事務,系統事務)、日志、并發控制、持久化、分布式)。
    4、界面設計
    5、系統設計模型(用例實現,系統設計類圖)
    6、編碼實現
    簡單來說就是以用例驅動,以架構為核心,迭代、增量的去開發。


    posted on 2007-03-24 11:44 java_蟈蟈 閱讀(1238) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 30岁的女人韩剧免费观看| 日本免费高清一本视频| 亚洲自偷自偷在线成人网站传媒| 国产一级淫片a视频免费观看| 搡女人免费免费视频观看| 亚洲国产综合精品| 亚洲精品97久久中文字幕无码| 99免费在线观看视频| 亚洲国产精华液2020| 亚洲V无码一区二区三区四区观看| 性生交片免费无码看人| 一个人看的www在线免费视频| 91亚洲国产成人久久精品网站| 波多野结衣免费视频观看| 你懂的免费在线观看网站| 亚洲国产精品成人午夜在线观看| 亚洲av无码不卡| 免费一区二区三区四区五区| 无码人妻精品中文字幕免费| 男男gay做爽爽免费视频| 亚洲色图综合网站| 久久国产成人亚洲精品影院| 亚洲成人免费电影| 99re8这里有精品热视频免费| 亚洲日韩精品无码AV海量| 亚洲AV无码专区电影在线观看| 国产hs免费高清在线观看| 亚洲免费视频观看| 成人黄网站片免费视频| 国产精品亚洲а∨天堂2021 | 在线视频免费观看高清| 在线观看免费视频一区| 亚洲国产精华液2020| 亚洲成a人片在线观看精品| 日本亚洲欧洲免费天堂午夜看片女人员 | xvideos亚洲永久网址| 最近最新中文字幕完整版免费高清| 久久免费线看线看| 国产免费黄色无码视频| 国产亚洲综合视频| 亚洲国产区男人本色|