建立型模式(creational pattern)的主要特點是將物件的建立與使用分離,根據物件的建立與組合方式的不同,建立型模式可分為單例(singleton)模式、原型(prototype)模式、工廠方法(factory method)模式、抽象工廠(abstract factory)模式和建造者(builder)模式 5 種。
本實驗的主要目的如下。
實驗原理1. 建立型模式的工作原理建立型模式隱藏了物件的建立細節,物件的建立由相關的工廠來完成,使用者不需要關注物件的建立細節,這樣可以降低系統的耦合度。建立型模式共 5 種,它們分別是
單例模式
、原型模式
、工廠方法模式
、抽象工廠模式
和建造者模式
,其工作原理在各自的教程中也都有詳細的介紹,每種模式的實驗大概要花 2 個學時,大家可以根據實驗計畫來選做若干個實驗,下面以工廠方法模式為例,介紹其實驗過程。
2. 工廠方法模式的工作原理工廠方法模式(factory method pattern),也叫虛擬構造器(virtual constructor)模式或者多型工廠(polymorphic factory)模式。
在工廠方法模式中,工廠父類負責定義建立產品物件的公共介面,而工廠子類則負責生成具體的產品物件,這樣做的目的是將產品類的例項化操作延遲到工廠子類中完成。其結構圖如圖 1 所示。
圖1 工廠方法模式的類圖
工廠方法模式包含如下角色。
工廠方法模式的特點是當系統擴充套件需要新增新的產品物件時,僅僅需要新增乙個具體產品物件以及乙個具體工廠物件,原有工廠物件不需要進行任何修改,也不需要修改客戶端,很好地符合了「開閉原則」。
實驗內容(1) 用工廠方法模式設計乙個電動自行車工廠的模擬程式。
要求:要為每種品牌的電動自行車提供乙個子工廠,如愛瑪工廠專門負責生產愛瑪(aima)牌電動自行車,雅迪工廠專門負責生產雅迪(yadea)牌電動自行車。如果今後需要生產台鈴(tailg)牌電動自行車,只需要增加乙個新的台鈴電動自行車工廠即可,無須修改原有**,使得整個系統具有更強的靈活性和可擴充套件性。(
)。(2) 按照以上要求設計類圖和編寫
j**a
源程式。
實驗要求所設計的實驗程式要滿足以下兩點。
實驗步驟(1) 用 uml 設計「電動自行車工廠模擬程式」的結構圖。「電動自行車工廠模擬程式」的結構圖如圖 2 所示。
圖2 電動自行車工廠模擬程式的結構圖
(2) 根據結構圖寫出「電動自行車工廠模擬程式」的源**。
① 電動自行車工廠模擬程式的源**如下。
② 物件生成器的源**如下。
③xml 配置檔案的**如下。
(3) 上機測試程式,寫出執行結果。
「電動自行車工廠模擬程式」的執行結果如圖 3 所示。
圖3 電動自行車工廠模擬程式的執行結果
(4) 按同樣的步驟設計其他「建立型模式」的程式例項。
(5) 寫出實驗心得。
建立型模式 原型模式
使用原型例項指定建立物件的種類,並且通過轉殖這些原型建立新的物件 原理是將乙個原型物件傳給要發動建立的物件,該物件通過請求原型物件轉殖自己來建立過程 轉殖方法 public prototype clone jdk中為我們提供了轉殖的方法clone 從object繼承下來,乙個物件要實現轉殖,需要實現...
建立型模式 原型模式
原型 prototype 模式主要用於建立物件的轉殖,通常其最簡單的形式就是採用自定 clone 函式並 傳入物件引數以返回此物件的乙個副本,這在 python 實作上可使用內定 copy.cop y 或 copy.deepcopy 函式來達到此目的。當已有乙個物件但對此物件的某些部分會被變更卻又想...
原型模式 建立型模式
文章首發個人部落格 如果我們有乙個類 sheep 它裡面有兩個屬性,名稱 name 年齡 age 現在我們有乙個它的例項 s1 我們需要按照這個例項的屬性再去建立兩個物件。1 sheep data public class sheep 2 main public class main 原型模式 用原...