1. 程式人生 > >第一篇 理解PHP設計模式

第一篇 理解PHP設計模式

ps:以下內容均為《PHP設計模式》的閱讀筆記,只做了概括,想了解詳情可以去檢視此書。謝謝閱讀哈。

一、OOP的思想

1、抽象類(abstract)

(1)抽象指示一個物件的基本特徵,使它與其他物件區分開來,從而從檢視者的角度提供了清晰定義的概念邊界。

(2)如果在一個抽象類中聲明瞭一個抽象方法,那麼繼承這個父類的各個子類中都必須實現這個方法。換種角度來看,抽象類中的方法可以看做一個合約,強制所有的子類繼承,即遵循同樣的標準。

2、介面(interface)

(1)與大多數抽象類一樣,介面也有抽象方法,不過,不能像在抽象類中那樣在介面中包含具體方法或變數。

以下是一個簡單的介面示例:

<?php
interface IMethodHolder{
    public function getInfo($info);
    public function setInfo($info);
    public function calculate($a , $b);
}
 ?>

(2)型別提示

提供型別提示的基本格式如下: function doWork(TypeInt $somevar) ....

型別提示必須是類或介面的名字,在設計模式中更傾向於使用抽象類或介面,因為它不會繫結一個具體實現的型別,而只是限制了結構,可以建立一個寬鬆而明確的繫結。這樣做的好處是隨著程式變得越來越大,只要遵循介面,就可以做任何改變而不會對程式造成破壞,所做的修改也不會和具體的實現糾纏不清。

3、繼承

繼承有助於程式中的不同類建立一種結構,不過為了保證類之間的鬆綁定,通常會繼承抽象類或介面,而且是淺繼承,只有一層子類。如果程式通過深層次繼承繫結到具體類,即使對父類簡單的修改,也會對子類帶來嚴重的破壞。

4、總結

從某種程度上來講,設計模式的目的就是建立物件之間的通訊鏈路;很多所謂的OOP並沒有正確的使用獲取方法(getters)和設定方法(setters),允許公開訪問獲取方法和設定方法只會破壞封裝。保持封裝同時保持物件之間通訊是設計模式的一個重要工作,要找出一種方法來建立通訊,同時不破壞封裝,這是設計模式的基本目的。

相關推薦

第一 理解PHP設計模式

ps:以下內容均為《PHP設計模式》的閱讀筆記,只做了概括,想了解詳情可以去檢視此書。謝謝閱讀哈。 一、OOP的思想 1、抽象類(abstract) (1)抽象指示一個物件的基本特徵,使它與其他物件區分開來,從而從檢視者的角度提供了清晰定義的概念邊界。 (2)如果在一個抽象

PHP設計模式理解

   一聽別人用了什麼什麼設計模式,總感覺多麼高大上似得。其實仔細理解起來,會發現你自己平時敲程式碼的時候有很多的思路原則,也正式某些設計模式中所要達到的思想。無非是前人開發中碰到的問題時,不利於繼續開發維護,從而想出的最佳解決方案,久而久之便形成了公認的固有寫程式碼的開

php設計模式總結2

類定義 當前 用戶 判斷 如何工作 繼承關系 com 成員 stat 策略模式: 定義了算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化獨立於使用算法的客戶。 封裝:把行為用接口封裝起來,我們可以把那些經常變化的部分,從當前的類中單獨取出來,用接口進行單獨的

PHP設計模式-策略模式

行為 一個 文件 ech 策略 something protected this cte <?php//策略模式//將一組特定的算法或行為 封裝成一個類,以適應上下文環境//策略的接口文件 約定策略的行為 針對一種情況 產生具體的策略interface Policy

php設計模式--簡單介紹

php 深入 工廠 設計 三種 方法 php開源 交換對象 而不是   平時我們用到的設計模式很多,建議大家多多讀一些php開源框架,當深入的閱讀了一些php框架之後,就能更好的體會設計模式的妙處,閱讀以下《大話設計模式這本書》,不過這本書裏邊的語言是java,但是學過編程

php設計模式--命名空間與自動載入

使用 命令 說明 自動載入 str space () 就會 sta 關於命名空間:   最早的php是沒有命名空間的概念的,這樣不能存在相同名稱的類或者函數,當項目變大了之後,產生沖突的可能性就高了,代碼量也會變大,為了規劃,從php5.3開始對命名空間就支持了。 說明代碼

PHP設計模式筆記

數據庫mysql emca 克隆 sqli clas 私有 extend 所有 name 一、工廠模式:減少new的使用,定義一個類,專門用來創建其它對象例: class A{ static function create(){ ret

PHP設計模式之策略模式

lang 女裝 keyword 種類 tty protect 電子產品 number 添加 1.概念 策略模式:將一組特定的行為和算法封裝成類。以適應某些特定的上下文環境,這樣的模式就是策略模式 2.功能 使用策略模式實現Ioc,

PHP設計模式之單例模式

blog inf DDU dbn 返回 bug 面向對象 程序員 userinfo 參考:http://www.cnblogs.com/yangjinjin/archive/2013/01/31/2887492.html 李炎恢PHP第三季視頻 單例模式 單例模式確保某個類

PHP設計模式-工廠模式

implement 不同的 span 不同 client 模式 public ref tail 代碼摘抄自:http://blog.csdn.net/mysteryhaohao/article/details/51181089 使用場景: 如果很多地方調用了類Test,那麽

理解js設計模式之單例模式

單例 false single 這樣的 字面量 不可靠 urn 如果 == 單例模式的定義:只提供唯一的一個實例來讓你訪問 js中單例是天然存在的: var a1={ hello:‘js‘ } var a2={ hello:‘js‘ } cons

php設計模式

dump turn extends hang echo return 父類 設計模式 工廠 設計模式單例模式1.將構造函數變成私有的2.提供一個靜態方法來返回對象3.在方法裏面加限制條件 class Ren{ public $name; public stati

PHP設計模式:策略模式

php interface 設計模式 策略模式 步驟1.定義策略接口#UserStrategy.php 用戶策略 <?php namespace celvmoshi; /**用戶策略接口 * Interface UserStategy * @package celvmoshi

PHP設計模式:觀察者模式

php 設計模式 觀察者模式 發布 訂閱 首先來看個栗子://事件 class EventDemo { //觸發了新事件 public function trigger() { echo "Event happening\r";

PHP設計模式:原型模式

php 設計模式 原型模式 sdfasd<?php /** * 原型模式(深拷貝+淺拷貝) */ declare(strict_types=1);//開啟強類型模式 class CopyObj { public $array; } //抽象原型類 abstract class

php設計模式三-----建造者模式

軟件 nds 意圖 .html 系統 pattern cti ons 解決 1.簡介 意圖:將一個復雜的構建與其表示相分離,使得同樣的構建過程可以創建不同的表示。 主要解決:主要解決在軟件系統中,有時候面臨著"一個復雜對象"的創建工作,其通常由各個部分的子對象用一定的算法構

php設計模式七 ---組合模式

for public item class hang 組件 arr colors 結構 1.介紹 組合模式(Composite Pattern),又叫部分整體模式,是用於把一組相似的對象當作一個單一的對象。組合模式依據樹形結構來組合對象,用來表示部分以及整體層次。這種類型的

PHP設計模式:單例模式

php singleton 單例模式 應用場景:在一次http請求中,多個地方使用到了數據庫連接,使用單例可以只需要創建一個連接。一個龐大的類被多次實例化的時候,會浪費巨大的內存空間。使用單例模式可以使多個對象共享內存中存在類的靜態空間。代碼示例:<?php //final防止類被

從匿名函數(閉包特性)到 PHP 設計模式之容器模式

pos code data- them 獲取 常用 per sdn 數據 匿名函數(匿名函數)   匿名函數,也叫閉包函數,它允許臨時創建一個沒有指定名稱的函數,常用作回調函數參數的值,也可以作為變量的值來使用。具體的使用見以下示例代碼: /* 示例一:聲明一個簡單

PHP設計模式------單例模式

生命 靜態綁定 技術分享 ted xiaomi function 繼承 運行 col 單例模式的作用就是在整個應用程序的生命周期中,單例類的實例都只存在一個,同時這個類還必須提供一個訪問該類的全局訪問點。 首先創建一個單例類,可以直接使用這個單例類獲得唯一的實例對象,也可以