下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、UML-F tags for Framework Construction Principles and Patterns- The UML Profile for Framework Architectures讀書會第四章,廖峻鋒 Aug 22,2003 NCCU Computer Center,學習目標,建構Framework的二大原則(及其標記) Unification / Separation Template-Hook觀念(及其標記) Gof Patterns的五大建構原則(Meta Patterns)(及其標記) 所有的Gof皆可歸為這五類。 如何自訂標記,Agenda,背景知識
2、Template / Hook Essential Framework Construction Principles UML-F for Gof Patterns UML-F for Domain-specific Patterns 進階閱讀參考,背景知識,控制權互換(Inversion of Control) Template / Hook 三個重要的基本Patterns,重要實作和流程控制角色的互換(Inversion of Control),傳統的公用函式庫(Library) 函式由函式庫定義。 我們寫主程式,在主程式中呼叫函式。 你控制流程,Library提供實作。 框架(Frame
3、work) 主程式由框架定義。 我們實作函式,被框架定義的主程式所呼叫。 Framework控制流程,你提供實作!,Inversion of Control,Library Reuse,String countStr = “256”; int count = Integer.parseInt(countStr);,你控制流程,Library提供實作!,Structured Style!,Framework Reuse,public class MyServlet extends HttpServlet public void doGet() / 提供實作 ,Framework控制流程,你提供實
4、作!,Call Back Style!,Meta Patterns,Gof Patterns其實用來用去也都是那幾招。 由Template / Hook組合成不同Meta Patterns. 作者認為各式各樣的Design Patterns只是T / H的不同組合而已。,Template Method /Hook Method,我們寫Framework時主要邏輯通常會寫在Template Method 中。 Template Method會呼叫若干Hook Method,Hook Method通常就是變異點。 只要改寫Hook Method,就可改變Template Method的行為。(課本
5、第68頁中) 參考下頁的例子。,範例:Template / Hook Method,Template/Hook Class,Template Class /Hook Class 擁有Template method的類別稱為Template Class。 擁有Hook method的類別稱為Hook Class。 同一類別可能同時是Template及Hook Class。(例如:Unif. 、Chain of Resp.),UML-F層級關係,UML-F (Template / Hook),範例,類似name space觀念,可以想成:在做s1這件任務時,B是擔任hook class的角色,做s
6、2時,B是擔任template class的角色,Hook Scale up,Template Class 可能也是別人的Hook Class 可參閱上一張投影片,三個重要的基本Patterns,DelegateGrand98 - 繼承的替代方案 Template MethodGof95- Inversion of Control的標準方式! InterfaceGrand98 - 利用界面區隔類別使用者(Client)與類別實作(Concrete Classes).,Delegate,Java API中到處都是Delegate. - Patterns in Java ,volume I by
7、Mark Grand.,Delegate範例,觀察:Design Pattern時常混合出現(A.Shalloway et al. 2000),InterfaceGrand98,Interface規定了一組方法(method),所有實作它的元件都要實作所有方法。 Client呼叫的是Interface中的方法,所以元件的抽換對Client來說是感覺不到的(不用改code)。,實作界面就可保証符合規格,java.io.FilenameFilter,ps.其實這是一個strategy pattern,Template MethodGof95,一個Browser向HttpServlet發出post時
8、,會觸發doPost()方法。 一個Browser向Servlet發出get時,會觸發doGet()方法。 判別是get 或 post,由HttpServlet決定,至於doPost(),doGet()由子類別決定。 Template Method是Framework中最常見到的Design Pattern!,Servlet,Patterns的五大建構原則,根據本書的歸納,所有Gof Patterns可分為五大Meta Patterns. Unification、Separation、Composite、Decorator及Chain-Of-Responsibility(參見p96,Fig 4
9、.24)。,Patterns的五大建構原則,五大原則(圖),Unification,Separation,觀察:Template在子類別!,建構框架二大基本原則-Essential Framework construction principles,Unification construction principle Separation construction principle,Unification,Template method,Hook method,template、hook在同一個Class,範例:登入機制的抽象化,UML-F (Unification),UML-F tags
10、for Unification Construction Principle,Separation,Template method,Hook method,Template Class 與 Hook Class有委任關係,Observer Pattern,範例:Strategy,Delegate,觀察:Design Pattern時常混合出現(A.Shalloway et al. 2000),Interface,UML-F(Separation),範例:FilenameFilter,Abstract Coupling(課本4.3.1),Separation 原則時常是Abstract Coup
11、ling,所以有時候我們也稱Separation為Abstract Coupling。,Abstract Coupling(課本4.3.1),Abstract coupling,這是一個Factory Method Pattern,UML-F tags for Gof Patterns,Factory Method Strategy Composite,這裏僅以Facotry Method為例,說明其方法。其它樣式請自行參考課本附錄B!,Factory Method的成員,UML-F for Factory Method,類別: FacM-Creator FacM-Product FacM-C
12、oncreteCreator FacM-ConcreteProduct 方法 FacM-facM,FacM-facM,FacM-anOp.,抽象方法!,範例 : .ContentHandler,UML-F tags for Domain-specific Patterns,Calculation Pattern 其實這個Pattern就是一個標準的Strategy Pattern. 將Strategy的UML-F標籤換成自訂的Domain-Specific tag.(參考課本p.108),Framework進階閱讀,Building Application Framework (Wiley)-
13、這本很像論文集,不好唸且錯誤很多,宜以讀書會方式加以了解。 Java Application Framework (Wiley). 應用架構入門與實例 台灣本土唯一一本Framework 著作,但是是數年前的著作,前幾章仍有閱讀的價值。(可自MISOO上自由下傳)。,Design Patterns學習地圖,精通任一種OO語言及OO基本觀念(繼承封裝多形)。 Thinking in Java(有中譯本) . Design Patterns入門 Applying UML and Patterns: An Introduction to Object-Oriented Analysis, 2/e(有
14、中譯本) 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 Applicati
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年会计电算化实训操作模拟试卷
- 2026年福建省苏教版初中生物下册生态系统知识点巩固习题
- 《化学品分类和标签规范 第15部分:氧化性固体》
- T∕CSNAME 197-2026 船舶油舱蒸汽加热鼓技术要求
- 人工智能辅助教育系统开发与应用考试
- 2025年河北省高校毕业生“三支一扶”计划招募考试试卷真题
- 2026年特岗教师教学反思能力考核试题及知识点
- 心脏隐藏风险测试题及详细答案
- 2027届广东省揭阳市空港区九年级化学第一学期期末教学质量检测模拟试题含解析
- 广西编辑记者考试试题及答案
- 河南省开封市某中学2025-2026学年七年级上学期期中数学试卷(含答案)
- 2025年09月湖北省农村信用社联合社网络信息中心度招考35名劳务派遣科技专业人才笔试历年常考点试题专练附带答案详解试卷2套
- 山东宜和纺织服饰有限公司高端新材料纺织品项目环境影响报告书
- GB/T 5709-2025纺织品非织造布术语
- T-CEIA ESD1007-2024 锂离子电池生产静电防护要求
- 安防行业智能安防监控系统建设方案
- DL-T5153-2014火力发电厂厂用电设计技术规程
- 冯谖客孟尝君二
- 重大群体性突发事件应急专项预案
- 2024年泸州市兴泸水务(集团)股份有限公司招聘笔试冲刺题(带答案解析)
- 饲料和饲料添加剂生产企业从业人员法规考核试题
评论
0/150
提交评论