gavi's picture
From gavi rss RSS  subscribe Subscribe

J2EE Design Patterns 



為何使用 Design Pattern?
科學家 VS 工程師


一個好的科學家產生好的創意

一個好的工程師利用最少的創意就可以將產品設計出來

Freeman Dyson

 

 
 
Tags:  J2EE  Design  Patterns  科學家  工程師  創意 
Views:  8370
Downloads:  61
Published:  September 25, 2007
 
2
download

Share plick with friends Share
save to favorite
Report Abuse Report Abuse
 
Related Plicks
聯網公司簡介

聯網公司簡介

From: tonylee
Views: 4380 Comments: 0

 
Java Programming India

Java Programming India

From: annaharris
Views: 59 Comments: 0

 
成功 的 八個 配方

成功 的 八個 配方

From: jane
Views: 2999 Comments: 0

 
20070419earth

20070419earth

From: babo
Views: 4262 Comments: 3

 
地球日的省思

地球日的省思

From: lvgangqiang
Views: 2638 Comments: 0
預定於1970年4月14日晚上七點降落在月球的Fra Mauro地點的Apollo 13號,並沒有降落。
因為當太空船接近月球時,一件小爆炸事故摧毀了他的主要維生系統。於是登月小艇不得不臨時被當作救生船使用,以便將太空人安全送返地球。
從接近月球的太空,返回地球需要3天。

 
See all 
 
More from this user
Microsoft Office Business Scorecard Manager 2005

Microsoft Office Business Scorecard Manager 2005

From: gavi
Views: 3183
Comments: 0

Google Earth

Google Earth

From: gavi
Views: 4477
Comments: 1

Comparing J2EE with .NET

Comparing J2EE with .NET

From: gavi
Views: 3658
Comments: 0

flash

flash

From: gavi
Views: 1789
Comments: 0

Evolution Of Soa - Gartner

Evolution Of Soa - Gartner

From: gavi
Views: 3666
Comments: 0

 
See all 
 
 
 URL:          AddThis Social Bookmark Button
Embed Thin Player: (fits in most blogs)
Embed Full Player :
 
 

Name

Email (will NOT be shown to other users)

 

 
 
Comments: (watch)
 
 
Notes:
 
Slide 1: 主題: J 2 E E Des ign Pa ttern 講師:恆逸資訊 耿維德 Da vid G ee ng da vid_g e eng@uuu.c om.tw
Slide 2: 為何使用 De s ig n Pa tte rn ? 科學家 VS 工程師 產 一個好的科學家 生好的創意 品設 一個好的工程師利用最少的創意就可以將 產 計出來 Fre e m an Dys o n
Slide 3: 詳細議程 • • • • 何謂 De s ig n Pa tte rn s De s ig n Pa tte rn s 的好處 U L 的簡介 M J2 EE De s ig n Pa tte rn s 的演變與介紹
Slide 4: Pa tte rn s • • • • 某特定狀況下針對一些問題的解答 可用於特定任意領域 解答並非唯一 例如企業經營模式、物流管理方法、 會計原則訂定
Slide 5: A a lys is /De s ig n Pa tte rn s n • 針對工程技術上進行分析設計時遇到 的問題的解答 • 同一問題可以有不同的解答方式 •概 可以是抽象或 念上的解答 •產 例如物件的 生方式、資料或軟體結 構的組成、不同狀況下要呼叫不同的 功能、資料庫的呼叫
Slide 6: Fra m e w o rk • 對於某一系統問題的整體解決方案 • 常常 一個系統的的大架構、細節由 為 An a lys is /De s ig n Pa tte rn 所提供 • 例如會計系統、行銷系統
Slide 7: De s ig n Pa tte rn 的特點 • 由一些設計過的軟體元件或子系統所構 成 • 可重複使用 • 快速解決問題 • 可以根據實際環境加以修改 • 促進良好溝通
Slide 8: 不用一直發明輪子 我設計的錄影機 麼 傑克,什 是 怎麼 沒想到 我 真 te Pa tte是太 傑克,那 rn ? 面板想在不同狀 Sta 態下按 Pla y 鍵 神奇了 會有不同反應 妮你 佛, 珍 佛, 妮你 珍 可以試試 真是太 .. State..pattern 太 遜了
Slide 9: De s ig n Pa tte rn 的經典 • De s ig n Pa tte rn s : Ele m e n ts o f R u s a b le Ob je c t- Orie n te d e So ftw a re By Eric h Ga m m a , R h a rd He lm , R lp h Jo h n s o n ic a a n d Jo h n V s id e s lis
Slide 10: Ho w to d e s c rib e p a tte rn s Value Object Factory Strategy • U in g U L s M <<interface>> ValueA <<interface> > ValueB Payroll System Use Cases ValueObjec t A + create() + setValue() + getValue() creates CompleteValueObject ValueObjectB Select Pay ment Method creates creates ValueObjectFactory + create() + get VO Class Info() + populate Value Object() Employ ee Create Employ ee Report Maintain Timecard <<EJBEntity>> BusinessEntity + getDataA() : ValueObjectA + getValue() + return Value Object() Project Management Database Client (from Logical View) + ret urn the only one object() Commissioned Employ ee Maint ain Purchase Order Login Updateable Value Objects Strategy : Client : BusinessObject Server Copy : ValueObject Client Copy : ValueObject Modified Copy : ValueObject 2. displayChargeCodes( ) Create Administrativ e Report 1. getData( ) 1.1. create( ) : TimecardForm Pay rollAdministrator 1.2. return ValueObject 1.2.1. create( ) 3. // enter hours for charge numbers( ) 1. getChargeNum s( ) 4. saveTimecard( ) 3.1. updateTimecard(TimecardEnt... 4.1. saveTimecard( ) Maintain Employ ee Inf ormation Bank Sy ste m 2. getValue( ) 3. setValue( ) : Employee : Tim ecardController 3.1.1. updateTimecard(TimecardEnt... Sy stem Clock Run Pay roll : Timecard 4.1.1. save(Timecard, Employee) 1.1. getChargeNumbers(String) Printer 4. setData(ValueObject) 4.1. create( ) 4.2. getValue( ) : IProjectManagementDatabase : PayrollDBManager 4.3. mergeData(ValueOjbect) 1.1.1. // get charge numbers( ) : Project Manageme...
Slide 11: Wh a t is U L M • • • • • U ifie d M d e lin g La n g u a g e n o 一種圖形化的語言 用來設計及建構軟體系統 OO 業界的標準之一 提供各式各樣與電腦語言無關的元素 (e le m e n ts ) • 可由不同觀點來解析系統 • 可延伸的機制 (Exte n s ib ility M c h a n is m ) e
Slide 12: U L His to ry M • 1 9 9 4 前 - 百家爭鳴 (Gra d y Bo o c h ) • 1 9 9 4 . 1 0 . - Ja m e s Ru m b a u g h (Ge n e ra l • • • • • • Ele c tric ) 1 9 9 5 - I a r Ja c o b s o n (Ob je c to ry) v 1 9 9 5 - U ifie d M th o d 0 . 8 n e 1 9 9 6 - U L 0 . 9 (I , M ro s o ft, Su n . . ) M BM ic 1 9 9 7 .1 - U L 1 .0 M 1 9 9 7 . 1 1 - U L 1 . 1 (OM M G) 2 0 0 0 ~2 0 0 1 – U L 1 . 3 M
Slide 13: U L Dia g ra m M Use Case Diagrams Sequence Diagrams Model Collaboration Diagrams State Diagrams Activity Diagrams Class Diagrams Object Diagrams Component Diagrams Deployment Diagrams
Slide 14: 使用 U L 來進行設計 M Use-case diagram Use Case 1 Actor A Use Case 2 FileList fList add( ) delete( ) Class diagram DocumentList FileMgr Document add( ) delete( ) name : int docid : int numField : int get( ) open( ) close( ) read( ) sortFileList( ) create( ) fillDocument( ) read() fill the code.. Statechart diagram add file [ numberOffile==MAX ] / flag OFF Openning close file close file Reading add file Actor B fetchDoc ( ) sortByName( ) Writing 1 Use Case 3 Closing rep Repository (from Persistence) File GrpFile read( ) Deployment diagram Window95 Windows95 Windows95 ¹®¼­°ü ¸® Ŭ¶óÀ¾ðÆ®. EXE Ì ¹®¼­°ü ¾ÖÇø´ ¸® Windows NT Sol ris a ¹®¼­°ü ¿£Áø EXE ¸® . ÀÀ¿ë¼­¹ö.EXE Alpha UNI X Collaboration diagram 1: Doc view request ( ) name : char * = 0 readDoc( ) readFile( ) read( ) open( ) create( ) fillFile( ) 9: sortByName ( ) L Repository DocumentList mainWnd : MainWnd 2: fetchDoc( ) 4: create ( ) 8: fillFile ( ) FileManager gFile : GrpFile user : Clerk fileMgr : FileMgr 3: create ( ) 6: fillDoc ument ( ) Document Windows NT I BM Mainfram e µ¥ÀÌŸº£ÀÌ ½º¼­¹ö GraphicFile 7: readFile ( ) 5: readDoc ( ) File document : Document FileList repository : Repository mainWnd user ƯÁ¤¹®¼­¿¡ ´ëÇÑ º¸±â¸¦ »ç¿ëÀÚ°¡ ¿äûÇÑ´Ù. 1: Doc view req uest ( ) fileMgr : FileMgr document : Document gFile repository 2: fetchDoc() 3: crea ( ) te 4: crea ( ) te 5: readDoc ( ) È­Àϰü¸®ÀÚ´Â Àоî¿Â ¹®¼­ÀÇ Á¤º¸¸¦ ÇØ´ç ¹®¼­ °´Ã ¼¿¡ ¼³Á¤À» ¿ »ÇÑ´Ù. äà 6: fillDocum ( ) ent 7: readFile ( ) 8: fillFile ( ) È­¸é °´Ã¼´Â ÀоîµéÀÎ °´Ã¼µé¿¡ ´ëÇØ À̸§º°·Î Á¤·ÄÀ» ½ÃÄÑ È­¸é¿¡ º¸¿©ÁØ´Ù. 9: sortByNam ( ) e Sequence diagram Component diagram Forward and Reverse Engineering Target System
Slide 15: U e Ca s e Dia g ra m s 存提款系統 開立帳號 存款 銀行客戶 提款 查 餘額 詢
Slide 16: Cla s s Dia g ra m <<entity>> Employee annualSalary + getAnnualSalary() <<entity>> SalesEmployee commissionRate + getPurchaseOrders() + getCommissionRate() 0..n <<entity>> PurchaseOrder + getPOinfo()
Slide 17: Se q u e n c e Dia g ra m : : : SalesEmployee PurchaseOrder Customer 1. buySomething( ) 1.1. create( ) 1.2. validInput( ) 1.3. addItem( )
Slide 18: Co lla b o ra tio n Dia g ra m 1.2. validInput( ) 1. buySomething( ) : Customer : SalesEmployee 1.1. create( ) 1.3. addItem( ) : PurchaseOrder
Slide 19: De s ig n Pa tte rn s 的種類 Creational Patterns Structural Patterns Behavioral Patterns
Slide 20: Cre a tio n a l De s ig n Pa tte rn – Sin g le to n 我是世界唯一 的 獨生子 (Singleton)
Slide 21: Cre a tio n a l De s ig n Pa tte rn – Sin g le to n (c o n t. ) Singleton - instance : Singleton <<static>> + getInstance() : Singleton - Singleton() Client <<use>>
Slide 22: Cre a tio n a l De s ig n Pa tte rn – Sin g le to n (c o n t. ) : Client Class : Singleton a Object : Singleton 1. create( ) 2. getInstance( ) 2.1. return the only one object( ) 3. invoke business method
Slide 23: Cre a tio n a l De s ig n Pa tte rn – Sin g le to n (c o n t. ) : Beauty Class : Superman : Superman 1. Superman( ) 2. getSuperman( ) 3. getSomeHelp( ) Beauty call Superman - instance : Superman - Superman() <<static>> + getSuperman() + getSomeHelp()
Slide 24: Cre a tio n a l De s ig n Pa tte rn – Sin g le to n (c o n t. ) Class Beauty { void getSomeHelpFromSuperman() { Superman superman=Superman.getSuperman(); superman.getSomeHelp(); } }
Slide 25: Stru c tu ra l De s ig n Pa tte rn Th e Co m p o s ite Pa tte rn
Slide 26: Co m p o s ite Pa tte rn (c o n t. 1 ) Component + operation() children Leaf + operation() Composite + operation() + add(child : Component) + remove(child : Component) + getChild(int) : Component
Slide 27: Co m p o s ite Pa tte rn (c o n t. 2 ) : Client Dir : Composite 1. create( ) 2. create( ) 3. create( ) 4. add(FileA) 5. add(FileB) 6. operation 6.1. operation( ) 6.2. operation( ) FileA : Leaf FileB : Leaf
Slide 28: Be h a v io ra l De s ig n Pa tte rn – Ob s e rv e r Pa tte rn
Slide 29: Be h a v io ra l De s ig n Pa tte rn – Ob s e rv e r Pa tte rn (c o n t. 1 ) Observable <<Interface>> + attch(o : Observer) + deattch(o : Observer) + notify() Observer ­observers 0..n + update() ConcreteObservable ­ state ­subject + getState() ConcreteObserver + update()
Slide 30: Be h a v io ra l De s ig n Pa tte rn – Ob s e rv e r Pa tte rn (c o n t. 2 ) :Client : 觀察者 A : 觀察者 B : ConcreteObservableConcreteObserver ConcreteObserver 1. attch(ObserverA) 2. attch(ObserverB) 3. modifyData 4. Notify() 4.1. Update() 4.2. Update()
Slide 31: Ob s e rv e r De s ig n Pa tte rn – 使用 Ja v a JDK 的例子 Observable (from util) # setChanged() + Observable() + addObserver() + notifyObservers() <<Interface>> Observer (from util) + update()
Slide 32: J2 EE Pa tte rn s 源流 • Su n Ja v a Ce n te r (SJC) s e rv ic e s 整理 • 全球超過 3 0 0 + Arc h ite c ts 心血結晶 • 從 Ja v a On e 2 0 0 0 開始構想 SM • Be ta 版在 2 0 0 1 三月發表於 ja v a . s u n . c o m /jd c • 正式版紀錄於 “ Co re J2 EE™ Pa tte rn s ” 書中
Slide 33: Bo o k s • Co re J2 EE Pa tte rn s : Be s t p ra c tic e s a n d De s ig n Stra te g ie s
Slide 34: J2 EE De s ig n Pa tte rn s 特性 • 有效利用 J2 EE 技術解決一些 J2 EE 平台上 常見分析設計問題的解決方案。 • 吸取及分享其他架構師分析設計經驗的溝通途 徑 • J2 EE Pa tte rn s 採用與 De s ig n Pa tte rn 相似 的命名規則 • 每一種解決方案都有其優缺點 • 每一種 Pa tte rn 都可以用不同的方法來實做
Slide 35: 學習 J2 EE De s ig n Pa tte rn s • • • • 對 J2 EE 環境及技術有一定的了解 熟悉 De s ig n Pa tte rn s 的運作 了解 U L 語法的使用 M 具有分析設計的經驗
Slide 36: Pa tte rn 的分類 • • • • • • De s ig n p a tte rn s Arc h ite c tu ra l p a tte rn s An a lys is p a tte rn s Cre a tio n a l p a tte rn s Stru c tu ra l p a tte rn s Be h a v io ra l p a tte rn s
Slide 37: J2 EE Pa tte rn s • 包含所有的 Pa tte rn 的分類 J2EE Patterns Design patterns Analysis patterns Creational patterns Structure patterns Architectural patterns
Slide 38: 使用 J2 EE Pa tte rn 的好處 • • • • • • • 不用重新發明輪子 吸收別人的分析設計經驗 快速解決已發生過的問題,提高系統開發速度 提供分析設計時通用的詞彙 讓新進人員亙容易了解系統分析設計內容 系統容易維護 降低開發維護成本
Slide 39: Fra m e w o rk 與 Pa tte rn s • 將各種 Pa tte rn 組合在一起以解決一系列特 定的需求及問題 Present layer Pattern A Pattern A Pattern A Business Layer Pattern A Pattern A Pattern A EIS Layer Pattern A
Slide 40: J2 EE 的架構
Slide 41: J2 EE Pa tte rn 的分層架構 Image101
Slide 42: J2 EE Pa tte rn s 的組成元素 • 設計考量 (De s ig n Co n s id e ra tio n s ) • 不良設計 (Ba d Pra c tic e s ) • 修正因子 (R fa c to rin g ) e • 1 5 個 Pa tte rn s 分成三類 – 顯示層 (Pre s e n ta tio n ) – 商業邏輯層 (Bu s in e s s ) – 整合層 (I te g ra tio n ) n • 很多的 Sa m p le Co d e
Slide 43: 設計考量 • 將 Clie n t 狀態儲存在顯示層 Client Tier Web Client Presentation Tier JSP/ Servlets State in HttpSession Resource Tier Database
Slide 44: 設計考量 (c o n t. ) • 將 Clie n t 狀態儲存在顯示層 Client Tier Web Client Client Presentation Tier JSP/ Servlets Business Tier Enterprise Beans State in Session Bean Resource Tier Database
Slide 45: 不良設計 • 將每一個 U e Ca s e 都對應到一個 s Se s s io n Be a n – 造成問題 – 解決方案 • Se s s io n Be a n 數量太多 • 修正因子 - 將 Se s s io n 加以整合 • Pa tte rn - Se s s io n Fa c a d e
Slide 46: 不良設計 • 使 En tity Be a n Fin d e r M th o d 傳回大 e 量資料 – 造成問題 • 效能大量下降 • 每一次呼叫耗用大量網路頻寬 – 解決方案 • Pa tte rn – V lu e Lis t Ha n d le r a • Pa tte rn - Da ta A c e s s Ob je c t c
Slide 47: 修正因子 - 將 Se s s io n 加以 整合 • 問題 – 發現有些 Se s s io n b e a n 與 En tity b e a n 為一對一對應 • 修正因子 – 找出類似的 Se s s io n b e a n ,將相似 Se s s io n b e a n 內的功 併 能加以合
Slide 48: 修正因子 - 將 Se s s io n 加以 整合 (c o n t. )
Slide 49: 顯示層 (Pre s e n ta tio n ) Intercepting Filter Front Controller View Helper Composite View Service to Worker Dispatcher Viewer
Slide 50: 商業邏輯層 (Bu s in e s s ) Business Delegate Value Object Session Facade Composite Entity Value Object Assembler Service Locator
Slide 51: 整合層 (I te g ra tio n ) n Data Access Object Service Activator
Slide 52: J2 EE Pa tte rn s 之間的關係
Slide 53: Pa tte rn s 樣板 • Co n te xt • Pro b le m • So lu tio n • Sa m p le Co d e • R la te Pa tte rn e – Stru c tu re - u s in g U L M – Stra te g ie s – Ho w to im p le m e n t
Slide 54: Pa tte rn - Co m p o s ite V w ie • 問題 : – 想要將畫面使用一些嵌入式的格式來切割 – 將畫面模組化 – 將不同的組合式畫面皆使用類似的子畫面 • 解決方案 :
Slide 55: Co m p o s ite V w - 解決方案 ie • 將畫面分成 Co m p o s ite v ie w 及一般的 v ie w 並套用 Co m p o s ite Pa tte rn
Slide 56: Co m p o s ite V w 案例 ie
Slide 57: Co m p o s ite V w - s e q u e n c e ie Dia g ra m : Client MainFrom : Composite 1. request( ) 1.1. create( ) 1.2. create( ) 1.3. create( ) Navigation: SubView Search: Feature : SubView Composite : SubView 1.3.1. create( ) 1.3.2. add( ) 1.4. add( ) 1.5. add( ) 1.6. add( ) 1.7. return Main From Object( )
Slide 58: Pa tte rn – 下一代的 to o l Pattern-driven process 1. Which Patterns?? Pattern A Pattern C Pattern B 2. How to make a framework? 3.Implement Strategies?
Slide 59: J2 EE 資源 • Pa tte rn 文件介紹 : w w w . p h p tr. c o m /c o re j2 e e p a tte rn s • Su n Ja v a Ce n te r, J2 EE p a tte rn s d e v e lo p e r. ja v a . s u n . c o m / • 一般性 Pa tte rn s : w w w . h ills id e . n e t/p a tte rn s
Slide 60: J2 EE 資源 (c o n t. ) • Be ta re le a s e d M rc h 2 0 0 1 o n a ja v a . s u n . c o m /jd c • J2 EE Pa tte rn s I te re s t 相關討論區 n • 與 Su n Ja v a Ce n te r 聯繫 j2 e e p a tte rn s - fe e d b a c k @ s u n . c o m a rc h iv e s . ja v a . s u n . c o m /j2 e e p a tte rn s in te re s t. h tm l
Slide 61: Su n Ja v a 課程 • OO2 2 6 Ob je c t Orie n t An a lys is a n d De s ig n • SL5 0 0 J2 EE De s ig n Pa tte rn
Slide 62: 結語 : • Design Patterns 的時代來臨了

   
Time on Slide Time on Plick
Slides per Visit Slide Views Views by Location