- 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
您可能关注的文档
- 可编程中断操纵器Intel8259A.ppt
- 台湾加高电子职工礼仪讲训教材.ppt
- 台湾university历史学系教授.ppt
- 台湾学生占据立法院.ppt
- 台湾蝴蝶甲天下演示课件.ppt
- 台阶写作手法赏析作者谈.pptx
- 台湾奥美的管理品牌之道.ppt
- 台阶200409051136.ppt
- 史明媚老师新讲义.ppt
- 台湾环岛风情8日.ppt
- 家庭作业与学习自主性的关系教学研究课题报告.docx
- 中西文化对比探索学生认知教学研究课题报告.docx
- 语文与数学跨学科教学案例分析教学研究课题报告.docx
- 环境保护意识在科学课程中的强化教学研究课题报告.docx
- 小学环境保护教育的有效途径教学研究课题报告.docx
- 钢结构检测与质量验收钢结构检测钢结构安装工程紧固件连接检测04课件讲解.pptx
- 英语听说课程的有效互动探讨教学研究课题报告.docx
- 音乐节奏培养学生的乐感与节奏感教学研究课题报告.docx
- 小学一年级上册数学奥数知识点讲解第13课《折叠描痕法》奥数练习全国通用奥数练习全国通用试题附答案.doc
- 语言游戏英语学习的新方式教学研究课题报告.docx
最近下载
- 广汽集团公司2010年度财报.pdf
- HEIDENHAIN海德汉TNC640 (34059x-10) Cycle Programming用户手册.pdf
- 2024年机电安装工程行业分析报告及未来五到十年行业发展趋势报告.docx
- 2022年长春市朝阳区工会系统招聘考试试题及答案解析.docx VIP
- 《大数据架构与设计》实践报告-网易云音乐大数据系统构建.docx VIP
- 仓储物流园及配套基础设施项目可行性研究报告-立项备案.doc VIP
- 城乡环卫保洁投标方案.doc
- 2022年1月吉林省长春市工会系统招聘考试《工会基础知识》试卷及答案.pdf VIP
- 2023年上海海洋大学计算机科学与技术专业《计算机网络》科目期末试卷A(有答案).docx VIP
- [高清书籍]威尼斯商人.PDF
文档评论(0)