程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi設計模式講解

Delphi設計模式講解

編輯:Delphi

Chapter

設計OO軟件是困難的;設計可重復使用的OO軟件更是困難的。你必須設計成適當的類架構(靜態的類架構及動態的互動關系)。這個類架構必須符合某一問體領域且需相當的一般化(可以彈性的解決問題領域中各種的變化;以避免重新設計至少降低重新設計。

一般傳統程序設計師或初級程序設計師雖使用OO語言但卻又使用程序性方式來寫作程序。所以初學OO者勢必要發一段長的時間來學習OO方式寫作程序。高級程序設計師會重復使用以前設計的成果來解決問題;這些可重復使用的樣版我們稱為模式(Pattern);模式包括類及對象之間的溝通。當你熟識這些模式s時就可以快速運用在解決設計問題而無需再重新去開發他們。

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

模式是前人的經驗;學習模式可以避免我們再走過去失敗的過程。

模式是什麼?

『每一個Pattern描述環境中不斷發生的一個特定問題;以及其解決問題的核心(core),以這種方式可以無限次使用這個解決方案而無需每次都要重新來過一次。(Christopher Alexander)』

基本上模式有四項要素:

名稱:代表一種解決問題的名詞;方便使用及溝通。

問題描述:這個模式要解決的問題及其背景(context)。

解決方式:描述要完成這個設計的元素(elements);元素間的關系;元素的責任及元素間的合作關系。

結論(cosequences):使用這個模式的結果、利益及可能的利弊得失(trade-off)。這可提供我們了解、評估及選擇模式時的一個參考。這可能是空間、時間的觀點;也可能是成本利益的觀點;或者是程序語言及實現的觀點及彈性、擴充性與可移植性的觀點。

本書所謂的模式 是『描述對象、類間的溝通及他們在特定的背景下使用來解決一般設計的問題』。一個模式描述、抽象(abstract)及界定一般設計結構的關鍵觀點;這個設計結構可以建立一個可重復使用的OO設計。每一個模式著重在一個特定的OO設計問題或議題(issue)。模式說明何時可實現;有哪些限制及利弊得失。

模式的說明方式

本書以下列觀點來描述模式

模式名稱(name)及分類(classification)。

目的(Intent):他做什麼、理由(rational)、特定的設計議題及解決什麼問題。

其它相關類似的名稱(Also Known As)。

動機(Motivation):解析問題及這模式的類及對象架構如何解決問題。

適用性(Applicability):適用的狀況;哪種不良的設計方式可以使用這個模式來解決及如何了解這些狀況。

結構(Structure):以圖形顯示模式的結構。

參與者(Participants):參與這個模式的對象及類與他們的責任。

合作(Collaborations):這個模式的參與者如何合作來達成他們的責任。

結論(Consequences):這個模式如何達成他的目標;結果及利弊得失,他的系統結構如何能讓你在往後改變時無須關聯到其它部分—獨立性(independently)。

實現(Implementation):實現時必須了解的陷阱、重點或技術,及語言上的限制。

范例程序(Sample Code):使用C++或Smalltalk。

曾經使用的例子(Known Uses)。

相關模式(Related Patterns):相關及差異點;可否及如何互相使用。

模式的分類

模式可以兩個向量分類:(用途及范圍)

模式可分三種用途:

構健(creational):考慮的是對象的構健。

結構(structural):處理的是類或對象的復合(composition)。

行為(behavioral):描述有關類及對象如何互動(interact)及分配責任的特性。

模式使用的范圍包括:

類:處理類及其子類間的關系。這些關系主要是經由繼承所以他們是靜態(static)在compile-time即固定(fixed)。

對象:處理對象間的關系。可以在run-time中改變所以是比較動態的(dynamic)。

構建型類模式延遲部分對象建立(create)到子類;構建型對象則由其它對象建立對象。結構型類使用繼承來復合(compose)類;結構型對象則描述對象復合的方法。行為型類使用繼承來描述算法(algorithms)及控制流(flow of control);行為型對象則描述一群對象如何合作完成一個單一對象無法完成的任務。

有些模式必須合作來完成工作;某些模式可以互相替代;有些模式的目的可能不同可是其達成結果的設計是類似的;也有部分模式互相參考的(reference)。

本書列有23種常用的模式;在網絡上也可以找到類似或創新的設計方式。

模式分類如下表:【P10 Table1.1:Design Pattern Space】

用途(purpose)

構建(creational)

結構(structural)

行為(behavioral)

范圍(scope)

(Class)

工廠方法

(Factory Method)

適配器

(Adapter)

翻譯器

(Interpreter)

模板方法

(Template Method)

對象

(Object)

抽象工廠

(Abstract Factory)

建設者

(Builder)

原型

(Prototype)

唯一

(Singleton)

適配器

(Adapter)

橋接

(Bridge)

復合

(Composite)

裝飾者

(Decorator)

外觀

(Facade)

輕量

(Flyweight)

代理

(Proxy)

責任鏈

(Chain of Responsibility)

指令

(Command)

迭代

(Iterator)

中介者

(Mediator)

備忘錄

(Memento)

觀察者

(Observer)

狀態

(State)

策略

(Strategy)

訪問者

(Visitor)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved