# Design Pattern

# Singleton 單例模式

  • 也被稱為 Greed singleton (貪婪單例)
  • 一開始就 new 出實體物件, 將 constructor 將其宣告為 private, 確保此物件只會存在一個.

# Simple Factor 簡單工廠模式

  • 又被稱作 靜態工廠 , 同一工廠所產生的, 會有共同的父類別

  • 訓練營 -> SimpleFactory

  • 冒險者 -> 父類別 (Product)

  • 弓箭手/鬥士 -> 實體產品 (ConcreteProduct)

  • 如果有人要來招募冒險者組隊,只要跟訓練營說請幫我訓練一個冒險者就可以,不用去理解訓練過程。

  • 如果要多訓練一組冒險者(牧師), 在訓練營內增加一個分流就好.

  • 違反了開放/封閉原則,因此簡單工廠不能算是一個健全的設計模式, 不過如果簡單工廠在小型的軟體架構中很好用,因此一般設計模式的教學都會從簡單工廠模式開始, 實務上也常常會用到這個簡單的模式。

# Factory 工廠模式

  • 工廠概念化, 提升為抽象概念
  • 新手村現在建立了兩座訓練營,弓箭手訓練營、鬥士訓練營, 相信看名子就知道這兩種訓練訓練營的功能是什麼。如此一來, 如果想要修改弓箭手的訓練流程,就修改弓箭手訓練營裡面的程式碼即可, 不用擔心是否會影響鬥士訓練營的運作, 而且如要增加冒險者的類別,例如說劍士, 只要新增一座劍士訓練營,完全不會改動到抽象訓練營與本來的實體訓練營。

# Abstract Factory 抽象工廠