發表文章

目前顯示的是有「Design pattern」標籤的文章

Hello PureMVC !

第一次聽到 PureMVC 的時候大概是兩年前,那時候就對這套 MVC Framework 很感興趣,不過當時對於它的架構是有看沒有懂,就一直拖到了現在。 最近因為工作需要用到的關係,所以又再次學習它,經過閱覽無數前輩分享的文章之後,終於初步了解它的運作模式了,因此分享這邊學習心得筆記。 什麼是 MVC ? 一個設計方法(Design pattern 也稱設計模式)。 想初步了解的朋友可以參考 維基百科的說明 。 網路也有許多相關文章,大略內容就是將程式開發架構分為 Model、View 和 Controller 三個部份的開發方式,建議可以閱讀 深入淺出設計模式 這本書。 什麼是 PureMVC ? 一個跨多語言的 MVC Framework,其中我們要用到的是 Actionscript 3.0 版本,這是他們的 官方網站 。 下圖是他的架構圖,除了 MVC 外,它也用到不少其他 design pattern,第一次看可能會霧煞煞,沒關係,我們下面慢慢介紹。

Develop Facebook Canvas Page with CodeIgniter

這篇文章是介紹如何使用 CodeIgniter 這個 PHP Framework 來初步架構出 MVC 的環境, 並且開發一個簡單的 Facebook Canvas Page. 什麼是CodeIgniter呢? CodeIgniter 是開發 PHP 應用程式的 framework 及工具組。 提供簡易的介面和邏輯結構來使用豐富的函式庫,其目的是讓你可以加 快開發速度。 使用 CodeIgniter 只需要寫少少的程式,讓創造力可專注在專案開發。 CodeIgniter CodeIgniter 台灣 CodeIgniter 中文使用手冊 ( 英 ) ( 中 ) 什麼是MVC呢? 簡而言之是一個程式設計模式(Design pattern), 詳細介紹推薦參考這篇: 透視 WebMVC 什麼是 Facebook Canvas page ? 簡單來說, 就是 Facebook 的應用程式, 像開心農場之類直接嵌入在 Facebook 內的網頁, Facebook 的API 很強大, 可以作手機應用, 網站應用等等, 這篇我們就只討論 Canvas page 這個範圍,有興趣的可以到 開發者頁面 研究看看. 進入本篇重點, 開發流程我把它分成三個步驟, 如下 : 下載 CodeIgniter 2.0 建立 Facebook 應用程式 開始編寫程式碼 1.下載 CodeIgniter 2.0 這裡我們使用 CodeIgniter 2.0.0 的版本來實作。 前往 CodeIgniter 網站 下載 CodeIgniter 2.0

Factory pattern 工廠模式

距離上一篇 Strategy pattern 策略模式 已經兩個多月了,一直拖到現在才生出這篇文章...orz。 其實這篇 工廠模式 應該要當作第一篇 Design pattern 的文章會比較好,因為這個模式很容易懂,但是 工廠模式 中又細分出一些其他類似的模式,例如 抽象工廠模式 ,所以我把一些相關的資料都讀了一遍後,分三篇作介紹。 工廠模式 最主要的精神就是將 new Class 這個動作另外封裝成一個 Factory Class,這個Factory Class 專門負責實體化這些類別。 特地這樣做有什麼好處呢? 舉個例子,假如我們現在有兩個繼承 Product 的類別,它們擁有 共同的方法 Operation() 一般來講,我們如果要實體化 ProductA 或 ProductB 的話,會這樣寫: 1: namespace FactoryPattern 2: { 3: class Program 4: { 5: static void Main( string [] args) 6: { 7: Product product = new ProductA(); 8:   9: product.Operation(); 10: } 11: } 12: } 這樣做有什麼缺點呢? 如果我 product 型別要換成 ProductB 的話,就需要把第7行的 new ProductA() 改成 new ProductB(),若是繼承 Product 的類別一多,以後程式碼的維護上會很麻煩。 簡單工廠模式 Simple Factory Pattern (又稱 靜態工廠模式 Static Factory Pattern ): 按照上圖,將擁有共同介面 類別的實體化動作封裝在 Factory 內,程式就可以在執行時 動態 決定要實體化哪個類別了。 Factory class: 1: namespace SimpleFactoryPattern ...