gavi's picture From gavi rss RSS  subscribe Subscribe

J2EE Design Patterns 



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


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

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

Freeman Dyson
 
Tags:  J2EE  Design  Patterns  科學家  工程師  創意 
Views:  5915
Downloads:  35
Published:  September 25, 2007
 
1
save to favorite
ask author to add audio Ask author to add audio
Share plick with friends Share
mark as inappropriate Mark as inappropriate
 
Related Plicks
Comparing J2EE with .NET

Comparing J2EE with .NET

From: gavi
Views: 2312 Comments: 0

 
Creating Web Applications for SAP BW and SAP Enterprise Portal with the SAP Java IDE

Creating Web Applications for SAP BW and SAP Enterprise Portal with the SAP Java IDE

From: emily
Views: 2685 Comments: 0

 
聯網公司簡介

聯網公司簡介

From: tonylee
Views: 3333 Comments: 0

 
Mvc Design Pattern

Mvc Design Pattern

From: gavi
Views: 4238 Comments: 0
“Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way (more)

 
See all 
 
More from this user
WS-BPEL 2.0 TC Briefing

WS-BPEL 2.0 TC Briefing

From: gavi
Views: 4938
Comments: 0

Albert Einstein

Albert Einstein

From: gavi
Views: 6747
Comments: 0

1,2 Chapter 1,2 Brake System Overview & Legal & Health

1,2 Chapter 1,2 Brake System Overview & Legal & Health

From: gavi
Views: 2595
Comments: 0

[CORSI - ITA] - Corso Star office

[CORSI - ITA] - Corso Star office

From: gavi
Views: 2999
Comments: 0

Successful Project Management

Successful Project Management

From: gavi
Views: 11733
Comments: 0

IRS XML Initiatives

IRS XML Initiatives

From: gavi
Views: 2313
Comments: 0

See all 
 
Place your Ad here for $2.00 a month
SAP ERP
Great companies run SAP. Not just big companies.
 
 
 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:
 
 
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
close
Please fill out the form below. You will be asked to make your payment to Myplick (Eastar Technologies) via Paypal. Your request will be processed within 24 hours after your submission.
 
Title (max 25 characters)
Link (placed on title)
Content (max 100 characters)
You have successfully submitted your ad request. Please send your payment to ericandlei@myplick.com via PAYPAL.
Ad submission failed. Please report the problem to ericandlei@myplick.com.