好站: Design Pattern for PHP 的 範例實作 與 解說

Design Pattern: 把重覆的事情, 包成可以重覆利用的物件, 設計越有彈性且簡易使用, 就是好的 Design Pattern.

專家對 Design Pattern 的解釋, 下述轉載自: Design Pattern 新解

Pattern 最簡單的定義

只要是一再重複出現的事物,就是 Pattern。

什麼是 Design Pattern

Pattern 就是一種「千錘百鍊」的智慧結晶。有經驗的專家和沒經驗的新手,差別就在於:有經驗的專家知道如何在適當的時機>,套用某些公式(Pattern)以解決特定 的問題,這是專家經年累月所培養出來的 Know-How(請參見「軟體產業的知識經濟」一>文)。

一般來說,物件導向軟體開發的程序可以粗略分成 OOA(物件導向分析)、OOD(物件導向設計)、OOP(物件導向實作)。在 OOD(Object-Oriented Design)階段所採用的 Pattern 就稱為 Design Pattern。運用良好的 Design Pattern,可以使得系統架構更優良(也更快完成),對於後續的 OOP、測試、維護,都會有很大的 幫助。Design Pattern 會告訴你,什麼情況下用 Delegation 而不要用繼承、什麼情況下用 Interface 而不要用 Class... 諸如此類的知識。這些都是軟體界前輩的智慧結晶。

我要強調 Design Pattern 專指 Design 時期的 Pattern。但是 Coding 時的 Pattern(例如程式碼內縮)最好不要稱為 Pattern,以免混淆。Coding 時期的 Pattern 最好稱為 Coding Style(或 Code Style)。

Design Pattern 這個名詞也可沿用到許多地方。我認為孫子兵法就是一本軍事領域 Design Pattern 的書,它告訴你什麼時候該採什麼樣的軍事動作。至於怎麼去砍人,則是屬於 implementation 的部分,不屬於孫子兵法的範圍。

總之,Design Pattern 是一種概念, 不過非常抽象, 下面兩本經典本, 有前輩整理的許多設計模式:

網路上也有相關的整理:

Design Pattern for PHP 的 範例實作 與 解說

不過 Design Pattern 的概念很多都太過抽象, 就算看完還是有很多是懂非懂, 這時後需要的就是大量的範例, 不過 Design Pattern 大部份範例都是 Java 的程式, 前幾天總算看到 PHP 版 Design Patterns 的整理囉~

下述是 Design Pattern for PHP 的範例實作與解說

相關網頁


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 My-Favorite-Site。將永久鏈結加入書籤。

好站: Design Pattern for PHP 的 範例實作 與 解說 有 7 則回應

  1. zhua 說道:

    很喜歡看你寫有關科技方面的東西,雖然有些對於新手的我有些艱澀、難懂。
    但很謝謝你的分享。

  2. Tsung 說道:

    這一篇真的是蠻困難的東西沒錯, Design Pattern 太抽象了. 我也不太懂, 所以要多看範例來學習.. 🙂

  3. kftseng 說道:

    從頭開始 lay 一堆 design pattern 只為了做某件事情,似乎有點浪費生命?很多既有的 framework 拿來套一套,應該就可以稍微可以見人一點了吧?或者我的觀念錯誤??

  4. Tsung 說道:

    嗯嗯, 你的觀念沒錯, 基本上只要有別人寫好的 framework, 當然一定要拿來直接套用, 了解 design pattern 主要是要用在, 要處理一個狀況, 但是沒有適用的 framework 時, 需要自己想, 藉由 design pattern 可以想到很多比較好的方法~ 🙂

  5. Nightmare 說道:

    最早聽到 Design Pattern 是在大一,但真的開始了解他在做什麼已經到大四了。不過從懂要到能實作和了解每個 Pattern 要用在那,我想還要在花更多的時間去摸索,我覺Design Pattern要真的能搞清楚真的需要累積一些實作經驗才比較好理解....

  6. brecgt 說道:

    Design Pattern for PHP 的範例實作與解說中的「Patterns For PHP - Pattern List」連結失效囉

    常期潛水,Tsung的文章常常讓解決我不少問題,謝謝~

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料