這學期剛上完Design Pattern的課程,使用的教科書是 J. Vlissides. 1998. Pattern Hatching: Design Patterns Applied. Addison-Wesley Longman Ltd. 這本書的作者跟老師是很好的朋友,Gang of Four之一,作者提到書中所有的設計都離不開兩大宗旨, Favor object composition over class inheritanceProgram to interface not implementation ,這篇會稍微介紹紀錄一下兩個要點目的是什麼,之後再慢慢介紹其他的pattern。

 

Favor object composition over class inheritance

當需要重用程式碼時,比較好的方法應該是利用 Composition 而非 Inheritance,利用 Composition 物件只會透過自己 interface 訪問自己的功能,不會打破封裝,關聯性也較低。

 

橘子亂說話 發表在 痞客邦 留言(0) 人氣()

What is SOLID?

程序設計領域, SOLID(單一功能、開閉原則、里氏替換、接口隔離以及依賴反轉)是由羅伯特·C·馬丁在21世紀早期引入的記憶術首字母縮略字,指代了物件導向編程物件導向設計的五個基本原則。當這些原則被一起應用時,它們使得一個程式設計師開發一個容易進行軟體維護和擴展的系統變得更加可能。[1] SOLID所包含的原則是通過引發編程者進行軟體原始碼代碼重構進行軟體的代碼異味清掃,從而使得軟體清晰可讀以及可擴展時可以應用的指南。SOLID被典型的應用在測試驅動開發上,並且是敏捷開發以及自適應軟體開發的基本原則的重要組成部分。

 

●  Single-responsiblity principle
一個class內應該只有一個改變的理由,意思是一個class應該只需要專注做一件事情,這個理由是當class內需要做兩件以上的工作時,一旦程式需要改變,因為他的耦合度比一件工作還要高,造成變更上的困難,所以盡量避免。

文章標籤

橘子亂說話 發表在 痞客邦 留言(0) 人氣()

Observer pattern 觀察者模式 (訪問者模式): 

這個模式的基本想法如下:首先我們擁有一個由許多對象構成的對象結構,這些對象的都擁有一個accept方法用來接受訪問者對象;訪問者是一個接口,它擁有一個visit方法,這個方法對訪問到的對象結構中不同類型的元素作出不同的反應;在對象結構的一次訪問過程中,我們遍歷整個對象結構,對每一個元素都實施accept方法,在每一個元素的accept方法中回調訪問者的visit方法,從而使訪問者得以處理對象結構的每一個元素。我們可以針對對象結構設計不同的實在的訪問者類來完成不同的操作。 通常使用在訂閱或需要推播的系統上。

 

範例

Class diagram : 

文章標籤

橘子亂說話 發表在 痞客邦 留言(0) 人氣()

MVC模式最早由Trygve Reenskaug在1978年提出 ,是全錄帕羅奧多研究中心(Xerox PARC)在20世紀80年代為程式語言Smalltalk發明的一種軟體架構。MVC模式的目的是實現一種動態的程式設計,使後續對程式的修改和擴充功能簡化,並且使程式某一部分的重複利用成為可能。除此之外,此模式通過對複雜度的簡化,使程式結構更加直覺。軟體系統通過對自身基本部分分離的同時也賦予了各個基本部分應有的功能。專業人員可以通過自身的專長分組:

●  控制器(Controller)- 負責轉發請求,對請求進行處理。

●  視圖(View) - 介面設計人員進行圖形介面設計。

●  模型(Model) - 程式設計師編寫程式應有的功能(實現演算法等等)、資料庫專家進行資料管理和資料庫設計(可以實現具體的功能)。

 

文章標籤

橘子亂說話 發表在 痞客邦 留言(0) 人氣()

功能性需求(Functional Requirements) : 

定義一個軟體系統或元件的功能,也是一個系統需提供的功能及服務。功能可以用一組輸入、行為及輸出的組合來表示。功能需求可以是計算、技術細節、資料處理或其他說明系統希望達成功能的內容。

 

Example : 

●  輸入輸出

文章標籤

橘子亂說話 發表在 痞客邦 留言(1) 人氣()

Extreme programming (XP) 

 

Major practices : 

●  Incremental planning

文章標籤

橘子亂說話 發表在 痞客邦 留言(0) 人氣()

由來 : 

先來說一說敏捷宣言的歷史吧,2001年2月,Martin Fowler,Jim Highsmith等17位著名的軟件開發專家齊聚在美國猶他州雪鳥滑雪聖地,舉行了一次敏捷方法發起者和實踐者的聚會。在這次會議上面,他們正式提出了Agile(敏捷開發)這個概念,並共同簽署了《敏捷宣言》。

 

那內容是什麼呢 ? 我將翻譯過後的版本貼上來分享給大家。

敏捷宣言 :  中文 英文

文章標籤

橘子亂說話 發表在 痞客邦 留言(0) 人氣()

RUP 統一軟體開發過程(Rational Unified Process,RUP)

UML associated process.

Brings together aspects of the above generic models

文章標籤

橘子亂說話 發表在 痞客邦 留言(0) 人氣()

Boehm's spiral model (Risk-Driven) :

圖片來源 : 維基百科

 

1988年,巴利·玻姆Barry Boehm正式發表了軟體系統開發的“螺旋模型”,它將瀑布模型快速原型模型結合起來,強調了其他模型所忽視的風險分析,特別適合於大型複雜的系統,他將模型分為四個階段,每一階段都有特別具體的目標被定義,且每一階段皆會進行風險的評價和降低,以及在開發時可用任何通用的Models,最重要的是每一階段皆會被審查於下一階段的規劃。

文章標籤

橘子亂說話 發表在 痞客邦 留言(0) 人氣()

Incremental delivery

增量式交付方法是介於瀑布式模型演進式開發兩個模型之間的開發方法,它結合了這兩個模型的優點。

Customer value can be delivered with each increment so system functionality is available earlier.  客戶價值在於可較早交付新增的系統功能

 

文章標籤

橘子亂說話 發表在 痞客邦 留言(0) 人氣()