關於樣式(Patterns)

James O. Coplien, Bell Laboratories, Naperville, Illinois 所定義的樣式(Patterns)如下:

『樣式』是目前軟體工程用來解決問題的準則(discipline),此準則是由物件導向社群中 所發展出來。樣式以許多準則為根基,包括有良好素養的程式設計( literate programming)」,更特別的是,亞歷山大(Alexander's work)對於城鄉設計及建築學的研究(Alexander, 1977)。

樣式社群的目標是建立大量的文獻資料(body of literature),以支援一般性的軟體設計及開發。較之技術方面,他們反而集中在記錄文化(culture to document),以支援穩健的設計(sound design)。軟體樣式在物件導向設計開始流行,是源於『Design Patterns --Elements of Reusable Object-Oriented Software』這本書。但是樣式已經使用在不同的領域中,如開發組織程序、研討會與教學,以及軟體架構。此時 ,軟體社群已經大量使用樣式在軟體架構及設計...........。

目前,樣式這個準則已有許多學術會議所支持,其活動所涵蓋 的範圍從舉辦軟體工程研討會,至創作大量的文獻資料。

甚麼是樣式,樣式是人們遭遇到特定問題時,大家慣用的應付方式。樣式可用來解決問題 ,而且是有效、可靠的。掌握愈多樣式,運用愈成熟,就愈是傑出的設計專家。

依據樣式理論大師亞歷山大(Christopher Alexander) 之定義﹕

「樣式是某外在背景環境(Context) 下﹐對特定問題(Problem)的慣用解決之道(Solution)   

所以我們可以發現樣式是不斷的重複發生,而有其重複性。但重複的不是問題的本身,而是問題的本質,所以要把不同問題以相同的樣式來處理,勢必要擷取其本質,也就是『抽象』。所以研究樣式必須重視問題本質而非問題的表象。同樣的問題的背景環境及解決之道也是抽象的。

此專欄主要是探討軟體樣式這個領域的相關運用課題,我們又根據樣式應用在不同的開發階段,將樣式區分為:

這個專欄主要是收集及翻譯中外著名學者專家,針對樣式所發表的各類精采文章 ,以供各界同好參考 。當然,若其中有所遺漏或不正確之處,也希望提出糾正。這些文章有些是『點空間』的成員所撰寫,或從網友、同好處收集得來,版權所有,故未經同意不得以任何方式被傳送或發行。

設計樣式(Design Patterns)

標題&內容說明

資料來源&作者

轉譯校稿

發表日期

設計樣式
Design Patterns--Elements of Reusable Object-Oriented Software

[內容摘要]

樣式是以往一些專家解決問題所留下的經驗經過整理可以協助生手快速進入設計OO程式的方式—這是經驗的結晶。樣式可以容易的重複使用設計及結構來開發新系統。樣式協助你選擇替代方案及改善維護工作。本書的樣式都是經過實證且成功運用在許多系統中。樣式是前人的經驗;學習樣式可以避免我們再走過去失敗的過程。

本書共列出23種軟體樣式﹐可解決軟體設計上的特定問題。書之中都是以C++及Smalltalk兩種語言作為範例

譯者特地將所範例另以Delphi 改寫 ,所有改寫範例請參考 Delphi 樣式範本

Erich Gamma: Richard Helm: Ralph Johnson; John Vlissides. Areca Chen  
設計模式

[內容摘要]

程式設計是思維具體化的一種方式,是思考如何解決問題的過程,設計模式是在解決問題的過程中,一些良好思路的經驗集成,最早講設計模式,人們總會提到 Gof 的著作,它最早將經典的23種模式集合在一起說明,對後期學習程式設計,尤其是對從事物件導向程式設計的人們起了莫大的影響。

後來設計模式一詞被廣泛的應用到各種經驗集成,甚至還有反模式(AntiPattern),反模式教導您如何避開一些常犯且似是而非的程式設計思維。

這邊的話將整理一些設計模式學習心得,實作的部份是使用Java,因而您會看到一些與 Gof 模式不同的圖及實作方式,這是為了善用一些Java本身的特性,至於C++的實作方面,Gof 的書已經給了不少的例子。

在一些模式的實作上,您會發現我用了介面(interface)來取代抽象類別(abstract class),這與原先的Gof書中的範例會不儘相同,這是因為在C++中沒有介面,一個完全沒有實作任何方法的抽象類別,根據當時描述的主題特性,可以的話會將之換為介面,在語義上會較符合Java語言的特性,但是您要知道的是,介面與完全沒有實作任何方法的抽象類別在某些時候是可以互換的。

在這邊所看到的 UML 圖都是使用 Jude 繪製的,Jude是一個純Java撰寫的UML工具程式,可運行與Windows、Linux等多個平台,體積小,使用簡易。

良葛格

2004/12/13
建立常規運算式的設計模型

[內容摘要]

本文提供建立常規運算式(RegEx,Regular Expression)結構之設計模型。此常規運算式定義特定重覆發生的問題(例如:特定的SQL表示式),運算式包括了常數、變數及運算元,並可根據變數設值並求解。此設計模型包括了常規運算式的結構定義、運算式的產生及運算式的求解(詳見《常規運算式設計模型》一文,有關運算式結構及尋訪演算法,本文不再贅述);本文主要討論根據運算式語法建立運算式結構,內容包括運算式字串拆解及運算結構的建立。

葉木金   2004/06/01
常規運算式設計模型

[內容摘要]

本文主要是提供常規運算式(Regular Expression)的設計模型。此常規運算式定義特定重覆發生的問題(例如:特定的SQL表示式),運算式包括了常數、變數及運算元,並可根據變數設值並求解。此設計模型包括了常規運算式的結構定義、運算式的產生及運算式的求解;運算式的拆解及語法檢核並不在本文討論之列,但可針對此模型再進一步地延伸。

葉木金   2004/02/11
在J2EE Web專案中應用Patterns

[內容摘要]

有鑒於開發J2EE專案時,專案成員實作的習慣與方式不一,我們需要為我們的專案設計一個應用程式架構(Application Framework),一方面可讓專案的成員遵循Application Framework的規則實作,提昇實作過程的效率,另一方面可在不同的專案之間重複使用Application Framework,快速地完成專案。本文的目的在描述一個用在J2EE 網頁專案的Framework,在描述的過程中,會逐步解釋使用Pattern跟沒有使用的差別,最後會發現套用這些Pattern之後,會覺得開發出來的專案架構比較堅實,也會發現一些程式碼可以在不同的專案重複使用。

範例程式碼

姚長利   2003/11/02
使用 Command 與 Strategy 產生 SQL 語法

(原文:Using Command and Strategy for SQL Code Generation)

[內容摘要]

Kyle Brown 現就職於 IBM,是 IBM 的資深技術人員,也是 Websphere 小組的成員。早年在 Knowledge Systems Corporation 從事Smalltalk、 Java、物件導向設計等教學活動,這篇文章,大致也是在那樣的環境中完成。文章內容描述從事指導學生實作資料庫,所面臨的問題,以及如何使用設計樣式來解決這些問題。雖然這篇文章著力於 Command、 Strategy 這兩個樣式,然而作者同時也暗示,其它樣式如 Builder 仍扮演相當重要的角色,不可偏廢任何可解決問題的方式。總之,這是一篇相當實務的文章。


Kyle Brown
James_Sa
譯作

朱子 編校

2003/7/2
Java 與樣式 (模式)

[內容摘要]

本書是一本講解設計原則以及最為常見的設計樣式的實用教材,目的是為工作繁忙的 Java 系統設計師提供一個快速而準確的設計原則和設計樣式的輔導。

本書分為 55 章,每一個章節講解一個編程樣式,說明此樣式的用意、結構,以及這一樣式適合於什麼樣的情況等。每一個章節都附有多個例子和練習題,研習這些例子、完成這些練習題可以幫助讀者更好地理解所講的內容。大多數的章節都有相對獨立的,讀者可以打開本書,從任何一章開始讀起,為了滿足不同程度的讀者的需要,本書提供了一些標為「專題」的章節,不閱讀這些章節,對閱讀本書的標準章節沒有影響。讀過本書之後,讀者可以很有信心地在自己的系統設計工作中使用學過的內容,與同事交流面向對象的設計經驗,並在事業發展上有更多的收穫。

本書適合於 Java 程序員、架構設計師及設計樣式愛好者,是一本實用的設計原則和設計模式的自學教材和使用手冊。

本書的評論:一枝看上去很美的花——書評《Java 與樣式》 剃刀(原作)

本書目前只有發行簡體版,希望在不久的將來可以看到繁體版書的發行。感謝作者提供試讀章節共七章。

 
原書目錄
第12章 簡單工廠(Simple Factory)樣式
第13章 工廠方法(Factory Method)樣式

第14章 抽象工廠(Abstract Factory)樣式

第15章 單例(Singleton)樣式

第18章 專題:序列鍵生成器與單例及多例樣式


請參閱原作者網站

閻宏

連接至作者網站

閻宏
Areca
Chen
2003/2/13
以 Java 程式範例來探討 Design Pattern:Factory Method

[內容摘要]

當我們撰寫應用程式時,如果無法明確地知道要產生的類別,需使用那一種物件型態時,你應該考慮使用 Factory Method 模式,讓子類別去指定要生成物件的類型;如果你把某種類型寫死在應用程式時,程式將變得毫無彈性,不容易修改,也不能再利用。

李元豪 朱子 編校 2002/12/27
以 Java 程式範例來探討 Design Pattern:Iterator

[內容摘要]

Design pattern 在物件導向軟體領域裡,是對於一再出現的問題,長期演進而成的解決方案。其目地是讓你的程式設計更有彈性,更具可再利用性。“Gof” 所著的《Design Patterns》在 Iterator 樣式的章節裡,是用 C++ 示範,現在作者試著改以 Java 程式來探討。

李元豪 Areca Chen
朱子 編校
2002/12/27
如何在實作設計樣式時保留「穩固性」
(
The Impact of Stability on Design Patterns Implementation)

[內容摘要]

設計樣式就是可重用的構想。很明顯地,這些構想都很穩固,而且容易改寫以適用特定場合。不幸的是,為了讓樣式「合用」,設計樣式中所展現的精緻特性(如穩固、易改寫性、普遍性等),在實作模型中都被削弱了。因此,在設計樣式與實作模型之間,暴露出一種「不一致」。本文建議:利用「軟體穩定性」做為解方,以消除設計樣式與實作模型之間的不一致。

S. Wu, A. Mahdy, M. Fayad 林康志
譯作

朱子 校稿

2002/11/18
活用設計樣式(三)
代理者、轉接器、傳遞者、觀察者樣式之應用

[內容摘要]

這是「活用設計樣式」系列的作品,與之前作品的目的相同。這篇文章乃針對 proxy(代理者) 、 adapter(轉接器)、 mediator(傳遞者)與 observer(觀察者)這類提供一種間接性(indirect)溝通模式的樣式,進行相似性程度的比較及討論。

吳立仲、
謝嘉瑋 著作

趙光正 指導

趙光正
朱子 校稿
2002/11/4
活用設計樣式(二)
抽象工廠、建構者、工廠方法樣式之應用

[內容摘要]

有感於大家在學習設計樣式(Design Pattern)上有相當程度的學習曲線,所以希望能以故事的方式,模擬系統設計階段時所遇到的情境。在撰寫程式與設計架構時,希望藉由這種方式可以達到靈活運用設計樣式的效果。

這篇文章以製造業為例,分別討論以下幾種樣式:抽象工廠(Abstract Factory)、建構者(Builder)、工廠方法(Factory Method)。

吳立仲、
謝嘉瑋 著作

趙光正 指導

趙光正
朱子 校稿
2002/10/16
活用設計樣式(一)
策略樣式、狀態樣式與橋接器樣式之應用

[內容摘要]

由於多數人學習「設計樣式(Design Pattern)」時,會把書上所展現的結構強加於所要做的系統上,而忽略書上所強調各個樣式所要使用的時機與使用的情形﹔然而,如果細看各個設計樣式的結構,會發覺有許多圖形是類似的,容易造成學習者的困惑。所以,希望透過本文,讓有意學習設計樣式者,可以更清楚理解各個樣式的不同。

本文這次所要探討的分別是:狀態樣式(state pattern)、策略樣式(strategy)、 橋接器樣式(bridge)。

吳立仲、
謝嘉瑋 著作

趙光正 指導

趙光正
朱子 校稿
2002/10/8
『Java 設計模式』學習心得

【註釋:Design Patterns 原作者譯為設計模式,但也有譯為設計樣式。我們接受這兩種譯名。】

[內容摘要]

如果你是拿 GOF 的《設計模式》一書來學習設計樣式,大部分的人都沒有辦法接受。並不是這本書太爛了,而是這本書實在寫得太完整了,鉅細靡遺結構完整,以致要深入瞭解並加以應用對初學者實在是太大的負擔。本文作者 依據其經驗以深入淺出的方式就實務上的應用以簡單的實例及說明快速的帶領初學者進入這個領域。如果你看過 GOF 的《設計模式》卻沒辦法應用,或者根本看不下去,你可以先看看本文給你的說明再回頭看原書,相信可以幫助你很容易的進入設計樣是的領域。
目前共計有 21 篇:

創建模式

設計模式之Factory(工廠方法和抽象工廠)

設計模式之Prototype(原型)

設計模式之Builder

設計模式之Singleton(單態)

結構模式

設計模式之Facade
設計模式之Proxy
設計模式之Adapter

設計模式之Composite

設計模式之Decorator

設計模式之Bridge

設計模式之Flyweight

行爲模式

設計模式之Template

設計模式之Memento

設計模式之Observer

設計模式之Chain of Responsibility

設計模式之Command

設計模式之State

設計模式之Strategy

設計模式之Mediator

設計模式之Interpreter

設計模式之Visitor

設計模式之Iterator(進行中)

板橋

Weilong 2002/5/8
將程式碼重整為樣式
Refactoring to Patterns(原文 )

[內容摘要]

本文並非正式介紹這項工作。目前原作者已撰寫十幾個重整而且還有許多正在進行中。其目的是幫助你學習如何:
  • 在適當的時機將程式碼重整為樣式而且當發現某些類似的東西時將樣式重整為非樣式(away from Patterns)。
  • 使用樣式溝通你的意圖。
  • 瞭解並學習大量的樣式。
  • 瞭解以簡單且精鍊的方式實作樣式。
  • 使用樣式清理、濃縮、淨化及簡化程式碼。

另一個目標是希望填充一個間隙,這個間隙是由Martin Fowler 在其《重整:改善現有程式碼的設計《Refactoring: Improving The Design Of Existing Code)》一書中首先提出的。有許多重整如:以狀態/策略取代傳統的程式碼(Replace Type Code with State/Strtaegy (227))及塑造樣版方法(Form Template Method (345) )等是討論如何將樣式引入系統中。就如 GoF 一書中的本質提到的;「設計樣式....提供你重整的的目標」,因此在樣式與重整之間有著自然的關連。

樣式是你想到達的地步(目的),重整是從某處到達這個地步的途徑(方法)。目前作者尚未為所有的樣式找到重整的方式,甚至是 GoF 書中的所有樣式。希望有一天這個間隙可以彌平。

作者所使用的格式類似 Martin 在其重整一書中所使用的類似,同時增加下列的格式:

  • 在每一個重整名稱後面加註零、一或二個星號。沒有星號表示作者不常使用這個重整。一個星號代表偶而使用,兩個星號表示常常使用。
  • 關於溝通、重複及簡化的章節。
  • 在『技巧』章節中加入步驟編號以對應範例章節中的步驟編號。

這是一個持續發展的工作,非常歡迎你的回饋。任何想法、評論及問題可以 eMail 至 joshua@industriallogic.com。這項工作隨時更新請參閱下列網址 http://industriallogic.com/xp/refactoring/。你有可以使用下列 eMail 參與討論區 refactoring@yahoogroup.com,這個討論區是討論有關重整、將程式碼重整為樣式、現有自動化重整的工具及 IDEs。

目前已有的方式:

  • 串聯建構函式(Chain Constructors)  
  • 以建構方法取代多個建構函式(Replace Multiple Constructors with Creation Methods)  
  • 用建構方法封裝子類別(Encapsulate Subclasses with Creation Methods)
  • Extract Creation Class
  • Replace Conditional Calculations with Strategy
  • Replace Implicit Tree with Composite
  • Encapsulate Composite with Builder
  • Extract Special-Case Logic into Decorators
  • Replace Hard-Coded Notifications with Observer
  • Move Accumulation to Collecting Parameter
  • Compose Method
  • Separate Versions with Adapters
  • 用Adapter樣式取代部分實作的介面
    (Adapt Interface)  

正在進行的有:

  • Replace One/Many Distinctions with Composite

 

Joshua Kerievsky

Industrial Logic, Inc.

透明 譯作

網站:
透明思考

 

2002/2/27
對於樣式的「十大誤解」
Patterns: The Top Ten Misconceptions

[內容摘要]

現在「樣式」這個詞真是非常流行。就像任何流行的東西一樣,對它的誤解也真是不少。甚至在一些發表出來的文章中,也存在著各種各樣的誤解,我想這會對讀者造成非常糟糕的引導作用。早已想寫一篇文章來澄清一些對樣式的誤解,卻又因為水平所限難以成文。恰在此時,我看到 John Vlissides先生的《十大誤解》,於是我便樂得當文抄公了。
關於設計樣式,下面有十種錯誤的觀點——很多都是很流行的觀點。

且看 Vlissides 先生如何撥開這些迷霧。

 

John Vlissides
conducts his research at IBM's Thomas J. Watson Research Center in Hawthorne, New York.

透明 譯作

網站:
透明思考

朱子 校稿

2002/2/26

分析樣式(Analysis Patterns)

標題&內容說明 資料來源&作者 轉譯校稿 發表日期
建立穩定分析樣式的樣式語言

(A Pattern Language for Building Stable Analysis Patterns)

[內容摘要]

軟體分析樣式在縮短軟體產品開發時程及減低成本這二件事上,扮演很重要的角色。但是,目前分析樣式的潛力尚未完全瞭解。其中一個常見的原因是,今日的分析樣式缺乏穩定性。在許多的例子中,為某個特定問題塑模的分析樣式,無法應用於不同背景卻同性質的問題上,以致於軟體開發人員只能辛苦地從頭分析所遇到的問題。這樣的結果降低了分析樣式的再用性。這份報告的內容是有關建立一個穩定分析樣式所需之樣式語言,這個語言的目的是希望可以提出一個方式,達成建構穩定的分析樣式。

Haitham Hamza and Mohamed E. Fayad

Computer Science and Engineering Dept.

University of Nebraska-Lincoln

Lincoln, NE 68588, USA

hhamza@cse.unl.edu

 

鄧文彥  譯作

Areca Chen 編校

2003/5/20
循環債務分析樣式
(A Recurring Duties Analysis Pattern)

[內容摘要]

本文主要是為了解決一個複雜的債權(obligations)系統中循環債務(recurring financial duties)所產生的疑難問題。本文中建議將債權從當事人(party)中分離(decoupling)出來,並且在固定的時間點從債權中產生債務。在此種方法下產生的債務具備所有必須的資料以及指定這個債務的付款金額。藉由此法,該債務和他們該付的付款金額可以在任何時候被輕易的查核。此分析樣式是從保險業中興起,但是可以應用於其他領域,例如貸款、分期付款、以及政府社會補助(state social support)。它不僅跟金錢進帳有關也跟未償貸款有關。

Lubor Sesera Softec, Ltd.

Kutuzovova 23, 831 03 Bratislava, Slovakia

e-mail: lubor@softec.sk

 

巫明遠 譯作

Areca Chen 編校

2003/5/19
角色建模讀書筆記

[內容摘要]

這篇文章,源自於作者閱讀 Martin Fowler《角色建模(Dealing with Roles)》的文章後,在吸納大師觀點的同時,加入了作者本身的一些看法,將之整理為一篇讀書筆記。作者提到「物件導向技術其實是一種以現實世界的自然觀點看待軟體代碼的方法」,然而在看似符合人們世界觀的方式,卻「要比程序式編程技術要難的多」。因此,作者一方面以「角色建模」為例,逐步將系統依需求的改變而演進,以追求軟體的「軟性」外,同時透過此文章解決上述那個似是而非的問題,揭開物件導向的面紗。這是一篇相當精湛的文章,作者不僅掌握到《角色建模(Dealing with Roles)》的精髓,同時也加入許多實務的觀點,讓人蕩氣迴腸不已。

 

林星

辰訊軟體工作室專案管理組資深專案經理

網站:
敏捷中國

朱子 編校 2002/10/23
分析樣式:預約與使用可重複運用的物體
(An Analysis Pattern for Reservation and Use of Reusable Entities)

[內容摘要]

本分析樣式(Analysis Pattern)描述如何預約與使用可重複運用的物體,以使用案例(Use Case)定義需求,並以類別模型(Class Model)、狀態圖(State Diagram)、與循序圖(Sequence Diagram)進行細部描述。同時,本樣式也相當於一個最小且完整的語意 (Semantic) 單元。

Eduardo B. Fernandez and Xiaohong Yuan 邱志良譯作

晴軒科技:首席架構師兼總經理

元擎軟體:高級顧問

朱子 校稿

2002/10/4
分析樣式與商業物件
(Analysis Patterns and Business Objects)

[內容摘要]

這篇文章是 Martin Fowler 於 OOPSLA'96 Business Object Workshop II 的演講稿,同年十月他也正式出版 Analysis Patterns 這本著作。

在這篇演講稿中,Fowler 首先談到分析樣式是彙集過去從事各種專案的經驗,並將相似之處整理成一種模型(model),而這種模型可以直接或稍加修改,以應用在未來所遭遇的專案中。由於這些模型類似可重複使用的物件模組(Object Models),並且可以協助專案初期的分析模型塑造,所以謂之「分析樣式」。其次,分析樣式與商業物件皆有重複使用的特性,然而仍有許多差異,至於這些異同點,就請看 Fowler 如何抽絲剝繭。

對於想要了解分析樣式,或者看過分析樣式然而對其有疑惑者,這篇文章是很好的起點及解葯。

 

Martin Fowler
Chief Scientist, ThoughtWorks

Justim 譯作

朱子 校稿

2002/2/26

架構樣式或程序樣式(Architecture Patterns or Process Patterns)

標題&內容說明 資料來源&作者 轉譯校稿 發表日期
營養不良的領域模型

(Anemic Domain Model)

[內容摘要]

營養不良的領域模型,其最基本的病徵是,乍看之下,還真有這麼一回事。在這這個領域空間裡面,有物件,一堆以名詞命名的物件。同樣的,這些物件 也使用豐富的關連及結構連接起來,就如同真實的領域模型該有的一般。但是,如果你檢視領域中的行為,你會為之鎮攝,你會瞭解物件中所擁有的行為太少了。確實,這些模型經常附帶著一些設計規則,教唆你不要在領域物件中放置任何領域邏輯 (domain logic) 。相反地,他們用一組服務物件(service objects)來補捉領域邏輯。這些服務物件是放在領域模型的上層,然後透過領域模型存取資料。

Martin Fowler Areca Chen譯作

趙光正、何明遠 校稿

2003/12/06
資料過濾架構樣式(Data Filter Architecture Pattern)

原文:Data Filter Architecture Pattern

[內容摘要]

這篇文章發表於 PLOP 1999 年的會議上,作者談論的話題,主要是類似像網際網路這般的系統環境,能有效提供大量又多樣化的資料,然而為了因應特定環境的政策或法令,因此,如何對這些資料進行有效的過濾,而此過濾系統又能適用於各種不同過濾政策,便成為一個重要的課題。作者於是提出實用的過濾架構,並推薦我們去使用這個架構。

誠如作者於文章結尾所言,這個架構乃應用分散式過濾服務元件這樣的概念,並且也經證實其可行性。華盛頓大學的 Raytheon, ST. Petersburg, FL,把這項概念使用在適應通訊環境(Adaptive Communication Environment, ACE)裡。當然,只要符合樣式的目的與動機,我們也可以嘗試把這個架構,實際應用到分散式物件導向系統的設計裡。

Eduardo B. Fernandez
Robert Flanders

Dept. of Computer Science and Eng,. Florida Atlantic University Boca Raton, FL 33431

小比 譯作

陳國生 校稿

朱子 編校

2003/8/19
對應至關聯式資料庫 (Mapping to Relational Databases)

原文:Chapter 3: Mapping to Relational Databases

[內容摘要]

這篇文章為《Patterns of Enterprise Application Architecture》書上的第三章,作者 Martin Fowler ThoughtWorks 的夥伴們在這本書中,指導讀者如何運用樣式來架構企業應用軟體。這本書的內容包含軟體架構階層(Layers)的概念及做法,介紹如何組織領域的運算邏輯(Domain Logic),並且如何運用領域模型(Domain Model)去架構物件/關聯應對模型(O/R Mapping),以 Web 為基礎的呈現做法,並行處理(Concurrency)所遭遇的問題及解決方式,以及分散式應用程式的策略等,同時教導如何使用特定的樣式去解決這些議題。當然,對於每一個樣式也有詳細的介紹及說明,部分的樣式亦提供簡單的程式實作範例。

第三章所談論乃鎖定在「物件/關聯對應模型(O/R Mapping)」,文中首先說明關聯式資料庫是目前最受歡迎、技術成熟且廣為應用的資料庫,所以是架構應用軟體時,所無可避免的議題。由於物件導向技術應用在關聯式資料庫的不對稱及不適應性,引發許多開發上的困難,所以才研發出 O/R 對應技術,來解決這些問題。然而如何從眾多 O/R 對應方式中,選擇一種適合企業使用的架構,如何採用這些結構來設計行為模式、資料的存取問題,以及如何連貫這些技術,也在這篇文章中作了概要性的說明。

(ps. 本章為 Informit 所提供的樣章)

Martin Fowler
Chief Scientist, ThoughtWorks
Annhy 譯作

朱子 編校

2003/5/23
物件導向思維六脈神劍

[內容摘要]

許多人學習 UML 進行物件導向分析與設計,耗用大量心血,卻總難以突破傳統思維方法的魔障,不免焦急氣餒。作者以十餘年物件導向實務心得,整理一套簡易有效的方法,期望能協助同好一舉突破傳統思維的瓶頸。方法分為六個階段,其精神與易經乾卦象辭極為相符,戲稱為物件導向思維六脈神劍。

邱志良

晴軒科技:首席架構師兼總經理

元擎軟體:高級顧問

邱志良 2002/10/28
Applying Patterns(應用樣式)

原文:

[內容摘要]

要在實際的專案當中使用樣式,需要的不只是實作樣式的詳細指導方針而已,有許多重要的議題還未論及。舉例來說,要如何的把樣式整合進已部分存在的設計當中呢?因此,除了樣式的實作方式外,我們還需要使用樣式的一般性指導原則。

作者提出九個應用樣式的樣式語言來作為指導原則,這九個樣式如下所示:

我們將分別介紹這九個樣式的內涵及如何運用它們。


Frank Buschmann
Areca Chen 及
Nick Lin
譯作

朱子 校稿

2002/7/2

 2008年08月23日 星期六