iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0
自我挑戰組

Design Pattern - 無所不在的設計模式系列 第 10

[Day10] Design Pattern - Prototype 原型模式

  • 分享至 

  • xImage
  •  

前言

鐵人賽進行到三分之一了💪🏻
繼續加油!!

Prototype 原型模式定義


Prototype Design Pattern specifies the kind of objects to create using a prototypical instance, and create new objects by copying this prototype.
-- GoF

原型模式指定使用原型實例來創建物件的種類,並透過複製該原型來創建新物件。

簡單來說就是,原型模式提供一個方法讓我們複製類別中已存在的物件,來創建一個新物件,
如果在新複製物件做了變更(例如: new object),它不會影響到原本的物件。

Refactoring Guru
-- 圖片來源: Refactoring Guru

原型模式是為了解決那些問題而出現的呢?


1.效能考量:
有些物件的創建成本很高,可能涉及到複雜的初始化過程、資源消耗或複雜的運算。
使用原型模式,我們可以複製現有的物件來節省這些成本,而不必每次都重新構建。
2. 大量相似物件的創建:
當需要創建大量具有相似結構但略有不同的物件時,手動創建每個物件可能會變得冗長且容易出錯。
原型模式允許我們通過複製現有物件來快速生成所需數量的物件。
3. 保護物件的內部狀態:
有時候,我們希望物件的內部狀態不受外部程式碼的干擾或修改。
原型模式確保每個客戶端都擁有自己複製過的物件,而不共享同一個實例,從而保護了內部狀態的完整性。

原型模式的一些components


  1. Prototype(原型): 一個介面或是抽象類別,用於定義原型物件。
  2. ConcretePrototype(具體原型物件): 用來實現要複製的原型抽象類別或是介面。
  3. Client(客戶端): 客戶端要求原型物件複製,來創建一個新物件。

UML圖



上一篇
[Day09] Design Pattern - Singleton
下一篇
[Day11] Design Pattern - Builder建造者模式
系列文
Design Pattern - 無所不在的設計模式30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言