国立政治大学电子计算机中心.ppt_第1页
国立政治大学电子计算机中心.ppt_第2页
国立政治大学电子计算机中心.ppt_第3页
国立政治大学电子计算机中心.ppt_第4页
国立政治大学电子计算机中心.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Understanding Design Patterns - for DIDC,廖峻鋒 Apr 28,2004 NCCU Computer Center,Agenda,Software Patterns觀念複習 LSP、OCP and DI Template Method、Factory、Singleton DesignPatterns的分類 Recommended Readings Q & A,Patterns 與棋譜,Why Patterns ?,增廣見聞、增加經驗。 開發人員共同的術語。 簡化軟體設計文件中的描述。,The Pattern System,由POSA96首先提出對Patterns的分類 將Pattern從鉅觀到微觀加以分類 Architectural Patterns (例如:MVC、Layer) Design Patterns (例如:Gof的23個patterns) Idioms (例如大量接合字串問題或Code Style),一些重要的OO技術,LSP:Liskov代換法則 OCP:Open Close Principle Dependency Injection:元件注入技術,LSP:Liskov代換法則,所有的子類別皆可代父出征,實作界面就可保証符合規格,Interface,Interface規定了一組契約(method),所有實作它的類別都要實作所有方法。 Client呼叫的是Interface中的方法,所以元件的抽換對Client來說是感覺不到的(不用改code)。,OCP,Open for extension;close for modification Refer to “The Open Close Princlple Tutorial”.,元件注入 Dependency Injection,Dependency Injection provide help us to implement the IoC Interface Injection (type 1 IoC) Setter Injection (type 2 IoC) Constructor Injection (type 3 IoC),Before Adapting DI,After Adapting DI,LoginModule Before Adapting DI,After Adapting DI,DI Frameworks,Apache Avalon Framework (type 1 IoC) Spring Framework (type 2 IoC) Pico Container (type 3 IoC),Template Method /Hook Method,Framework的作者通常將主要邏輯寫在Template Method 中。 Template Method會呼叫若干Hook Method,Hook Method通常就是變異點(Hot Spot)。 覆寫Hook Method,就可改變Template Method的行為。( 例如Servlet的doGet()/doPost() ),Servlet,Factory,一般create一個類別的instance時,我們會使用new 如果在runtime才能決定要new那個類別怎麼辦?,範例:時常需要切換多台資料庫,Informix A,Informix B,Oracle C,MySQL D,IfxAConnection,IfxBConnection,OraCConnection,MySqlDConnection,ConnectionFactory,choose,ClientApp,create(參數),Xml config file(設定參數),範例:時常需要切換多台資料庫,template method,hook method,在template method中呼叫hook method,Factory的型式,simple static factory Factory method (Gof) Abstract factory (Gof),Simple Static Factory,BmwCar bmwCar = (BmwCar) CarFactory.createCar(“BMW”);,BenzCar benzCar = (BenzCar) CarFactory.createCar(“Benz”);,CarFactory的實作,public class CarFactory public static createCar(String carType) if (carType=) else if() else ,一堆if else 如何refactoring?,Refactoring by Factory Method Pattern,Using Map as Factory Container,carFactoryContainer : java.util.HashMap,CarFactory carFactory = getCarFactory(“BMW”); BmwCar bmwCar = (BmwCar) carFactory.create();,getCarFactory without mutiple ifelse,CarFactory getCarFactory(String carType) return carFactoryContainer.get(carType); ,SingletonGof95,java.lang.Runtime 每一個Java應用程式都會對應一個Runtime的Instance,在系統中有一個Runtime物件代表這個Instance。 應用程式可以透過Runtime來和底層的JVM溝通。 對整個系統來說,Runtime應只有一個Instance。,System.Runtime,Design Patterns的五大建構原則(圖),Unification,Separation,觀察:Template在子類別!,Patterns的五大建構原則,Unification,Template method,Hook method,template、hook在同一個Class,Servlet,Separation,Template method,Hook method,Template Class 與 Hook Class有委任關係,Observer Pattern,如何活用Patterns,博學,實作經驗,連結與印証,內化與活用,不斷將經驗與所習Patterns連結 不需要刻意使用Patterns 有時候經由適當的重構會發現Patterns的必要性。,多看別人的Code,Recomanded Readings,Architectural Patterns,P of EAA,Core J2EE Patterns 2/e,OO入門推薦書藉,(C.Larman 02) 對OO、UML、RUP、Framework及Design Patterns做了很棒的入門介紹。 公認最佳的OO技術入門書。 中譯本:趙光正譯 nt720元。,Framework進階閱讀,Building Application Framework (Wiley)-這本很像論文集,不好唸且錯誤很多,宜以讀書會方式加以了解。 Java Application Framework (Wiley). 應用架構入門與實例 台灣本土唯一一本Framework 著作,但是是數年前的著作,前幾章仍有閱讀的價值。(可自MISOO上自由下傳)。,Design Patterns學習地圖,精通任一種OO語言及OO基本觀念(繼承封裝多形)。 Thinking in Java(有中譯本) . Design Patterns入門 Java與樣式理論 / Java與樣式實作 (閻宏) Applying UML and Patterns: An Introduction to Object-Oriented Analysis, 2/e(有中譯本) Design Patterns Explained: A New Perspective on Object-Oriented Design(有中譯本) Design Patterns 於 Java 語言上的實習應用(有中譯本),Design Patterns學習地圖2,觀察別人如何使用Patterns(Java) Java Design Patterns: A Tutorial Applied Java Patterns(有中譯本) Patterns in Java VI,V2. 活用Patterns Design Patterns Java Workbook(有中譯本) Pattern Hatching: Design Patterns Applied(這本是以C+為例).,Design Patterns學習地圖3,經典 Gof(有中譯本) Architectural Patterns Patterns of Enterprise Application Architecture Pattern Oriented Software Architecture (POSA) 這本書scope非常廣,包含了Software Architecture、Architectural Patterns 、Design

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论