第十七章 设计样式简介.ppt
《第十七章 设计样式简介.ppt》由会员分享,可在线阅读,更多相关《第十七章 设计样式简介.ppt(30页珍藏版)》请在麦多课文档分享上搜索。
1、第十七章 設計樣式簡介,課前指引 本章介紹基本的設計樣式以及其概念。設計樣式是一門很專業的物件導向軟體設計知識,並且是軟體設計上相當熱門的話題。在書中,我們從三大類設計樣式中挑選幾個簡單易懂的樣式來做介紹;另外,也將探討幾個在書中範例計畫所採用的設計樣式及其目的。,章節大綱,備註:可依進度點選小節,章首示意圖,17-1 簡介,17-4 結構樣式,17-3 行為樣式,17-2 建構樣式,章首示意圖,17-1 簡介,樣式這個概念首先是出現在建築工程中。樣式是由Christopher Alexander在他所著之”A pattern Language:Towns, Building, Constru
2、ction”這本書中提出。Alexander對於樣式給出了如下的定義:每個樣式都描述了一個在我們的環境中不斷出現的問題,然後描述該問題的解決方法。透過這種模式,你可以無限數次地使用那些已有的解決方法,無需再重複相同的工作。,17-1 簡介,設計樣式 因此,所謂的樣式就是對於反覆出現的設計問題所提供的解決方法。Alexander所談論的樣式是指建築工程領域上的樣式。而近年來,同樣的思維與概念也逐漸地在軟體工程的研究以及實作領域中受到相當的重視 在軟體設計上,對於設計樣式的研究首推由Gamma等四位物件導向技術大師所著之”Design Pattern:Elements of Reusable Ob
3、ject-Oriented Software”這本書。這本書中主要記載著23種不同的設計樣式,並且將這些設計樣式分為三大類:建構樣式(creational pattern)、結構樣式(structural pattern)、以及行為樣式(behavioral pattern)。,17-2 建構樣式,當物件的建構依賴於某些決策時,建構樣式提供我們如何建構物件的方針。建構樣式包含有下列幾個: Abstract Factory Builder Factory Method Prototype Singleton,17-2 建構樣式,工廠方法 宣告一個建構產品(product)物件的工廠介面(inte
4、rface或是抽象類別),將產品物件的實際建構工作留給工廠角色的子類別。 UML表法:,17-2 建構樣式,工廠方法 範例說明 假設我們正在設計一個有關繪圖的軟體。這個軟體目前所處理的形狀(Shape)包括有圓形以及長方形這兩個物件。 由上面的敘述,我們知道程式中會處理到兩個物件,一個是圓(circle),另一個是長方形(rectangle)。我們可以將它們視為產品(product)。並且對於每一個產品我們可以設計一個對應的工廠。UML的設計模型如下所示:,17-2 建構樣式,工廠方法 範例說明當我們需要用到圓型時,我們就叫圓型工廠幫我們製造它。當我們需要生成橢圓形時,我們就請橢圓型工廠幫我們
5、製造它。,17-2 建構樣式,客戶端 下面所列為客戶端(client)的程式。由程式碼中我們可以清楚地看到,實際的產品建構工作是由特定的具體工廠子類別來負責。具體工廠的父類別只負責宣告了一個抽象的工廠方法 createProduct()來讓客戶端呼叫。客戶端並不需要知道產品是如何被建構出來的,因為那是工廠的責任。這就好比如說一家賣家電用品的零售商,當他的貨品短缺時,他只需要告訴製造貨品的工廠送貨較好了。至於貨品是如何製造的,並不是他所應該關心的。,17-2 建構樣式,客戶端 程式碼範例,01 public class Main 02 public static void main(String
6、 args) 03 Factory a = new CircleFactory(); 04 Shape s1 = a.createProduct(); /工廠方法 05 s1.draw(); 06 System.out.println(); 07 Factory b = new RectangleFactory(); 08 Shape s2 = b.createProduct(); /工廠方法 09 s2.draw(); 10 11 ,17-2 建構樣式,開閉原則 值得一提的是,如果今天我們必須增加新的產品時,我們只需要設計一個新的具體產品,以及一個具體的工廠來生產它即可。這樣就可以不用更改既
7、有的設計,並且擴充了既有程式的功能。因此,工廠方法基本上滿足了開閉原則(OCP)。,17-3 行為樣式,行為樣式探討物件之間的演算法以及責任分配的問題。行為樣式包含有下列幾個: Chain of Responsibility Command Interpreter Iterator Mediator Memento,Observer State Strategy Template Method Visitor,17-3 行為樣式,樣版方法 對於一個演算法來說,其中的某些部份可能定義很明確,所以,我們可以在父類別中實作。而其他不明確的部份可能有許多不同的實作方式。所以,將不明確的部份留給子類別來
8、實作。 UML表法:,17-3 行為樣式,責任 由上面類別圖所表示的靜態結構可以看出此樣式中,父類別實作了templateMethod()。這個方法templateMethod()就是所謂的樣板方法。在這個樣板方法定義了流程的處理步驟(圖中所示的primitiveMethod()等等),真正實作這些步驟則是子類別的責任。,17-3 行為樣式,可維護性 從另外一個觀點來看Template Method。在你的設計中,它可能包含了許多的類別從事類似的工作或是流程。那麼,為了避免程式碼的重複所造成的維護困難,你應該將相同的部分從各類別中分離出來放到父類別裡頭。這樣一來,這一部份就不會重複出現在子類別
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十七 设计 样式 简介 PPT
