惰性初始模式

在程式設計中, 惰性初始是一種拖延戰術。在第一次需求出現以前,先延遲創建物件、計算值或其它昂貴程式。 這通常是以一個旗號來實現,用旗號來標示是否完成其程式。每次請求對象時,會先測試此旗號。如果已完成,直接傳回,否則當場執行。 對於此想法更一般的論述,可見惰性求值。 對指令式語言,這個模式可能潛藏著危險,尤其是使用共享狀態的程式習慣。

簡介

"惰性工廠"

以設計模式的觀點來說,惰性初始通常會和工廠方法模式合作,這結合了三種構想:

•使用一個工廠去得到一個類別的實例(工廠方法模式)。

•將實例存在一個雜湊中,所以下次要求一個實例卻有相同參數時,可以得到同一個實例(可和單例模式來做比較)。

•在第一次時,使用惰性初始來實例化物件(惰性初始模式)。

工廠方法

工廠方法模式(英語: Factory method pattern)是一種實現了“工廠”概念的面向對象設計模式。就像其他創建型模式一樣,它也是處理在不指定對象具體類型的情況下創建對象的問題。工廠方法模式的實質是“定義一個創建對象的接口,但讓實現這個接口的類來決定實例化哪個類。工廠方法讓類的實例化推遲到子類中進行。”

創建一個對象常常需要複雜的過程,所以不適合包含在一個複合對象中。創建對象可能會導致大量的重複代碼,可能會需要複合對象訪問不到的信息,也可能提供不了足夠級別的抽象,還可能並不是複合對象概念的一部分。工廠方法模式通過定義一個單獨的創建對象的方法來解決這些問題。由子類實現這個方法來創建具體類型的對象。

對象創建中的有些過程包括決定創建哪個對象、管理對象的生命周期,以及管理特定對象的創建和銷毀的概念。

在面向對象程式設計中, 工廠通常是一個用來創建其他對象的對象。工廠是構造方法的抽象,用來實現不同的分配方案。

工廠對象通常包含一個或多個方法,用來創建這個工廠所能創建的各種類型的對象。這些方法可能接收參數,用來指定對象創建的方式,最後返回創建的對象。

有時,特定類型對象的控制過程比簡單地創建一個對象更複雜。在這種情況下,工廠對象就派上用場了。工廠對象可能會動態地創建產品對象的類,或者從對象池中返回一個對象,或者對所創建的對象進行複雜的配置,或者套用其他的操作。

這些類型的對象很有用。幾個不同的設計模式都套用了工廠的概念,並可以使用在很多語言中。例如,在《設計模式》一書中,像 工廠方法模式、抽象工廠模式、生成器模式,甚至是單例模式都套用了工廠的概念。

示例

C#

Fruit類別本身在這裡不做任合事。_typesDictionary變數則是一個存Fruit實例的 Dictionary 或 Map ,其透過typeName來存取。

Java

相關詞條

熱門詞條

聯絡我們