l

2017年7月28日 星期五

《設計模式的逆襲》第N度復活:Singleton

June 28 22:59~23:19

螢幕截圖 2017-07-28 23.19.02


大概2年多前就「公開嗆聲」要寫《設計模式的逆襲》,後來花了時間整理書本章節目錄,也動手寫了一兩篇,但總覺得怪怪的,還少了些什麼。

這本書有好幾個作用力(forces)需要考慮:

  • Teddy特別想談的倒不是GoF設計模式,而是Alexander的pattern設計方法。Alexander的設計方法應該要佔這本書最重要的份量。
  • 既然談了Alexander的設計方法,應該也要談一下軟體設計模式社群的歷史與演進過程。
  • 上面這兩件事情交代完畢之後,就可以談GoF的23個設計模式。關於這部分Teddy最想做的是把GoF設計模式改用Context、Problem、Forces、Solution、Resulting Context這種格式重寫詮釋,這也是一個不小的功夫。
  • 最後,如果上面這三件事情都做到,那這本書不就要厚到嚇死人的地步?書的頁數也是一個很強烈的force,這又限制了前面想做的這三個目標。

後來腦筋卡住,加上有其他工作在忙,三不五時又生個小病什麼的,就把寫書的事情丟到一邊。最近有點時間,覺得還是應該想辦法完成《設計模式的逆襲》,後來想到一個做法:把原本top-down的寫作思維改成bottom-up,也就是根本不要管這本書最後寫出來會變成什麼樣子,而是先把個別元素準備好,最後再看看要怎麼整合成一本或N本書

***

花了四天的時間先整理好Singleton(獨體、單例)設計模式,檔案在此有興趣的鄉民可以下載來看一下,對於內容有任何建議也歡迎直接告訴Teddy。

***

友藏內心獨白:感恩。

3 則留言:

  1. 請問 Spring Singleton 與 Singleton Design Pattern 有什麼不同嗎?

    回覆刪除
    回覆
    1. 我在文章中有提到不知道你有沒有看到?Spring Singleton是由Spring容器控制回傳某class的同一份instance,你不需要把一個 class 實作成 GoF的Singleton,但是你的程式必須透過Spring獲得該class的instance,不能自己new才會有Singleton的效果。

      刪除