- 1、本文档共45页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
国立政治university电子计算机中心
2001/11/1 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那個類別怎麼辦? 範例:時常需要切換多台資料庫 範例:時常需要切換多台資料庫 Factory的型式 simple static factory Factory method (Gof) Abstract factory (Gof) Simple Static Factory CarFactory的實作 public class CarFactory { public static createCar(String carType){ if (carType==…) else if(…) else … } } Refactoring by Factory Method Pattern Using Map as Factory Container CarFactory carFactory = getCarFactory(“BMW”); BmwCar bmwCar = (BmwCar) carFactory.create(); getCarFactory without mutiple if…else CarFactory getCarFactory(String carType) { return carFactoryContainer.get(carType); } Si
您可能关注的文档
最近下载
- 跨越架搭设施工合同.docx
- 2023年二季度医疗质量管理委员会会议记录.docx VIP
- 北师大版(2019)必修第一册 Sports and Fitness Writing Workshop A True Story 课件(共23张PPT)).pptx VIP
- 6MW屋顶分布式光伏电站项目可研报告.docx
- 2024年学校食堂食品安全风险隐患排查整治记录表.docx
- 叶是光合作用的主要器官.ppt
- 活动一 影子变变变(课件)蒙沪版二年级上册综合实践活动.pptx
- 2024-2025学年初中综合实践活动九年级第二学期沪科版(贵州专用)教学设计合集.docx
- 统编版小学语文六年级上册质量检测卷.pdf
- 人民医院高额病例异常住院费用病例核查方案.docx
文档评论(0)