Book description
動態專案的物件導向程式設計
本書以簡單的範例與全方位的應用程式,教導你使用各種物件導向模式,讓你更有效率的建構伺服器端應用程式,並且在過程中增進你的 PHP 編程技巧。
《PHP 設計模式學習手冊》教導你更精緻的編程風格,讓你大幅度的減少開發時間。這些可重複使用的模式可以協助你解決複雜的問題,以及物件導向程式的組織方式,讓你只要調整一部分的程式,就可以修改大型專案。
‧學習設計模式的概念,包括如何針對特定的問題來選擇模式
‧探討物件導向程式設計的概念,如組合、封裝、多型與繼承
‧應用創造型設計模式來動態建立網頁,以工廠方法取代直接實例化
‧使用結構型設計模式,在不更改原始程式的情況下,改變既有的物件或結構
‧使用行為型模式,讓物件互相合作完成任務
‧使用行為型模式與 MySQL 互動,如 Proxy 與 Chain of Responsibility
‧探討如何使用 PHP 的內建設計模式介面
William Sanders 博士,Hartford 大學教授,教導多媒體網頁設計與開發,多年來已累積豐富的 PHP 設計模式使用經驗。他是 ActionScript 3.0 Design Patterns 的作者之一(O’Reilly),已著作 50 本以上電腦以及電腦相關的書籍。
Table of contents
- 封面
- 書名頁
- 英文版權頁
- 獻給
- 目錄 (1/2)
- 目錄 (2/2)
- 前言 (1/2)
- 前言 (2/2)
- 第一部分 設計模式基礎入門
- 第一章 PHP與物件導向程式設計
- 接著我們進入中階與高階的程式設計
- 為什麼要使用物件導向程式設計?
- 讓問題更容易解決
- 模組化
- 類別與物件
- 單一任務原則
- PHP的建構函式
- 以Client作為Requester類別
- 關於速度
- 開發與修改的速度
- 團隊的速度
- 循序編程與程序編程的缺點在哪裡?
- 循序編程
- 程序編程
- 現在就給我酬勞,或以後才給
- 第二章 OOP的基本概念
- 抽象
- 抽象類別
- 抽象屬性與方法
- 介面
- 介面和常數
- 類型提示:幾乎等於資料型態
- 封裝
- 日常封裝
- 使用可見度來保護封裝
- Getter與Setter
- 繼承
- 多型
- 一個名稱,多個實作
- 設計模式內建的多型
- 慢慢來
- 第三章 設計模式的基本概念
- MVC鬆耦合與重新注意程式設計
- 設計模式的基本原則
- 第一設計模式原則
- 以程式碼提示來使用介面資料類型
- 抽象類別與它們的介面
- 第二設計模式原則
- 使用Client的基本組合
- 委派:IS-A與HAS-A的差異
- 設計模式是大張的小抄
- 設計模式的組織
- 選擇設計模式
- 重新設計的原因為何?
- 哪裡會改變?
- 設計模式與框架有什麼不同?
- 第四章 使用設計模式UML
- 為什麼要使用整合模組化語言(UML)?
- 類別圖
- 參與者符號
- 關係註解
- 相識關係
- 聚合關係
- 繼承與實作關係
- 建立關係
- 多重關係
- 物件圖
- 互動圖
- 物件導向編程的關係圖與符號扮演的角色
- 繪製UML的工具
- 其他的UML
- 第二部分 創造型設計模式
- 第五章 Factory Method設計模式
- 什麼是Factory Method模式?
- 使用Factory Method的時機
- 極簡範例
- 工廠的工作
- 用戶端
- 適應類別的改變
- 添加繪圖元素
- 協調產品
- 更改文字產品
- 更改繪圖產品
- 添加新的產品以及參數化的請求
- 一個工廠,多個產品
- 新工廠
- 新產品
- 使用參數的用戶端
- 協助器類別
- 檔案圖
- 產品更改:不用理會介面!
- 第六章 Prototype設計模式
- 什麼是Prototype設計模式?
- 使用Prototype模式的時機
- 複製功能
- 複製品不會重新執行建構函式
- 建構函式不應該執行真正的任務
- 簡單的Prototype範例
- 研究果蠅
- 在原型使用OOP
- 現代商業組織
- 介面的封裝
- 介面實作
- 用戶端組織
- 進行更改,添加功能
- 動態物件實例化
- PHP王國的原型
- 第三部分 結構型設計模式
- 第七章 Adapter模式
- 什麼是Adapter模式?
- 使用Adapter模式的時機
- 採用繼承的Adapter模式
- 類別Adapter極簡範例:貨幣兌換
- 採用組合的Adapter模式
- 從桌機到手機
- 轉接器與修改
- 第八章 Decorator設計模式
- 什麼是Decorator模式?
- 使用Decorator模式的時機
- 極簡Decorator模式
- Component介面
- Decorator介面
- 具體元件
- 具體裝飾者
- Client
- 包裝器呢?
- 包裝器之中的基本資料型態
- PHP的內建包裝器
- 設計模式包裝器
- 擁有多個元件的裝飾者
- 多重具體元件
- 具有多重狀態與值的具體裝飾者
- 開發者的約會服務
- HTML使用者介面(UI)
- 由Client類別傳遞HTML資料
- 由變數名稱到物件實例
- 添加裝飾
- 第四部分 行為型設計模式
- 第九章 Template Method模式
- 什麼是Template Method模式?
- 使用Template Method的時機
- 極簡範例:使用Template Method來顯示圖片與 說明文字
- Abstract Class
- Concrete Class
- Client
- 好萊塢原則
- 同時使用Template Method與其他設計模式
- 用戶端減少了工作量
- Template Method參與者
- Factory Method參與者
- 在Template Method設計模式中的hook
- 設置Hook
- 實作Hook
- 用戶端與跳過Hook
- 小而強大的Template Method
- 第十章 State設計模式
- 什麼是State模式?
- 使用State模式的時機
- 狀態機
- 開燈,熄燈:極簡State設計模式
- Context為王
- 狀態
- 透過Context發出用戶端請求
- 添加狀態
- 更改介面
- 更改狀態
- 更新Context類別
- 更新用戶端
- 導航器:更多的選擇與格子
- 設置矩陣狀態圖
- 設置介面
- Context
- 狀態 (1/2)
- 狀態 (2/2)
- 由用戶端挑選路徑
- State模式與PHP
- 第五部分 MySQL與PHP設計模式
- 第十一章 通用連結類別,與安全防護Proxy模式
- MySQL的簡單介面與類別
- Pregnant介面
- 通用MySQL連結類別與靜態變數
- 簡單的用戶端
- 登錄用的Protection代理
- 設置登錄註冊
- 實作登錄代理 (1/2)
- 實作登錄代理 (2/2)
- 代理與現實世界的安全
- 第十二章 Strategy設計模式的彈性
- 封裝演算法
- Strategy與State設計模式的不同
- 不要使用條件陳述式,拜託!
- 演算法家族
- 極簡Strategy模式
- 用戶端與觸發器指令碼
- Context類別與Strategy介面
- 具體的Strategy
- 擴展Strategy模式,使它具備資料安全性以及 參數化演算法
- 資料安全協助類別
- 為演算法方法添加參數
- 問卷
- 資料輸入模組
- 用戶端要求協助
- 在Context類別之中,小型但重要的改變
- 具體的Strategy (1/2)
- 具體的Strategy (2/2)
- 靈活的Strategy模式
- 第十三章 Chain of Responsibility設計模式
- 傳遞任務
- 在MySQL Help Desk中的Chain of Responsibility
- 建立與載入回應表格
- Help Desk的Chain of Responsibility
- 自動的Chain of Responsibility與Factory Method
- Chain of Responsibility與日期驅動的請求 (1/2)
- Chain of Responsibility與日期驅動的請求 (2/2)
- Factory Method完成任務
- 易於更新
- 第十四章 以Observer模式建構多重設備CMS
- 內建的觀察者介面
- 使用Observer模式的時機
- 使用SPL與Observer模式
- SplSubject
- SplObserver
- SplObjectStorage
- SPL具體Subject
- SPL具體Observer
- SPL用戶端
- Free Range PHP與Observer模式
- 抽象Subject類別與ConcreteSubject實作
- Observer與多重具體Observer
- Client
- 製作一個簡單的CMS
- CMS公用程式
- 多重設備Observer (1/3)
- 多重設備Observer (2/3)
- 多重設備Observer (3/3)
- 以OOP思考
- 索引 (1/2)
- 索引 (2/2)
- 關於作者
- 出版記事
Product information
- Title: PHP設計模式學習手冊
- Author(s):
- Release date: July 2013
- Publisher(s): GoTop Information, Inc.
- ISBN: None
You might also like
book
優雅的SciPy|Python科學研究的美學
“本書滿足以下重要需求:引導學生優雅的實作訊號與影像、圖學和生物資訊學中的經典演算法” -Lav Varshney University of Illinois “雖然沒有一本書可以教完科學研究Python的所有工具,但是有這本書會讓你看到,它可以幫你節省時間、減少痛苦。” -Greg Wilson Curriculum Lead, DataCamp 歡迎來到科研界Python社群,如果你是一個寫Python的科學研究者,這本實用的指引書,不只教你SciPy和相關函式庫的重要基礎,而且能讓你看到美麗、易讀,同時能應用在實務上程式碼。你會學到如何寫出具備清楚、簡潔和高效的優雅程式碼。 閱讀本書,會看到許多科研界Python生態圈的範例程式碼,這些程式碼足以代表本書的精神。使用實際的科研資料,用SciPy、NumPy、Pandas、scikit-image和其它Python函式庫解決真實世界的問題。 ‧探索NumPy陣列,數值科學計算的底層結構 ‧使用百分位正規化使測量值貼和特定分布 …
book
JAVASCRIPT錦囊妙計第二版
網頁程式設計 "這是一本涵蓋全面並且擁有豐富實務範例的書。" -Dr. AxelRauschmayer, 《Speaking JavaScript》的作者 JavaScript在應用規模上日趨廣泛,如何善用JavaScript解決問題已是一門重要的課題。本書提供眾多的範例程式。這些範例涵蓋瀏覽器、伺服器及行動裝置領域的各種應用。每個範例包含可再利用的程式碼,對JavaScript物件、Node、Ajax、JSON、資料持續、圖形與多媒體、框架、JavaScript模組化、API等均提供了實用的建議。 針對有開發經驗的讀者,本書第一部分包羅JavaScript傳統應用方式以及新進概念。第二部份深入探討伺服器、行動應用開發以及許多最新工具。在過程中你將省下許多寶貴時間並學習到更多尖端技術。 主題簡介: ‧JavaScript經典 ‧陣列、函式與JavaScript物件 ‧存取使用者介面 ‧測試與可及性 ‧建立及使用JavaScript函式庫 ‧前後端的Ajax溝通 ‧豐富互動的網頁效果 …
book
深入理解運算原理|從簡單的機器到無所不能的程式
Tom Stuart,電腦科學家、程式開發人員,也是倫敦一所數位產品顧問公司Codon的創辦人。 他擔任顧問、領導者、培訓師,協助公司改善他們創造軟體產品的方法,尤其是這些方法的品質和清晰度。 終於能以既吸引人又極具實用的方式,學習運算理論和程式語言設計。這本書以你所認知的脈絡解說電腦科學的理論,協助你察覺這些概念何以重要,以及如何將它們注入你的日常的程式設計工作。 本書揚棄數學符號或不熟悉的純理論程式語言(例如Haskell或Lisp),而是以簡化的風格,使用Ruby來呈現形式語意、自動機理論和lambda演算的函數程式設計。因此非常適合精通現代語言、但卻欠缺電腦科學正規訓練(或不足)的程式開發人員。 * 瞭解基礎運算概念,諸如語言裡的圖靈完整性 * 發現程式如何使用動態語意將想法傳達給機器 * 將電腦簡化到只剩基本元素,探索它可以做什麼 * 學習通用圖靈機如何引領今日一般用途的電腦 * 使用簡單的語言和細胞自動機來執行複雜的計算 * …
book
JAVASCRIPT網頁應用程式設計
一本教您如何開發全能用戶端應用程式的jQuery程式設計指南 「強力推薦的必讀好書。如果你希望能運用最先進的開發工具,來開發最先進的應用程式,《JavaScript網頁應用程式設計》絕對是一本不容錯過的無價珍寶。我早已數不清究竟曾推薦過我幾位讀者拜讀此書了!」 —Addy Osmani AOL的JavaScript程式設計師 若想要開發出功能齊備、操作體驗不亞於桌面應用程式的JavaScript網頁應用程式,勢必得將一些原先由伺服器端程式包辦的工作,搬移到用戶端程式裡,但這並非一件容易的事。本書的主要目的,是希望能讓進階的JavaScript程式設計師,了解在開發最先進用戶端應用程式過程中,所需進行的一切步驟。像是:系統架構和網頁模版的設計、開發框架平台的選擇和伺服器溝通的方式…等等。 本書還會透過許多實際範例應用程式,協助你徹底了解書中所有的重要觀念。相信讀過本書後,你所開發出的JavaScript應用程式,不僅能提供使用者最即時迅速的回應,還能帶給使用者絕佳操作體驗。 ‧說明如何運用模型-檢視器-控制器(Model-View-Controller,簡稱MVC)模式、如何管理應用程式中的相依關係 ‧說明何謂模版(Template)和資料繫結(Data Binding) ‧說明如何載入遠端資料、如何運用Ajax機制、如何發出跨網域的請求 ‧說明如何利用WebSockets和Node.js開發出即時應用程式 ‧說明如何以拖曳/置放方式上傳檔案、如何在上傳的同時顯示目前處理進度 ‧說明如何運用目前主流的框架平台和函式庫,包括:jQuery、Spine和Backbone ‧說明如何撰寫測試程式、如何善用主控台為應用程式除錯 ‧說明部署程式的最佳實務做法,包括:快取(Cache)和精簡程式碼(Minification) …