原创 組合模式實現方式二

<?php // 組合模式 interface Component { public function doAction(); public function addComponent(Component $c); public

原创 適配器模式之對象適配

<?php // 適配器模式-對象適配 /** * 需要被適配的類 * 需求:給 Source 新增一個新的方法但又不修改 Source 的源代碼 */ class Source { public function action

原创 工廠模式的三種形式

<?php // 簡單工廠模式 interface ICar { function run(); } class BMWCar implements ICar { public function run() { echo '

原创 單例模式之繼承碰見的問題

<?php // 單例模式之繼承 class Singleton { protected static $ins = null; private final function __construct() { } protect

原创 堆排序

堆的定義: n個關鍵字序列Kl,K2,…,Kn稱爲(Heap),當且僅當該序列滿足如下性質(簡稱爲堆性質):(1) ki<=k(2i) 且 ki<=k(2i+1)(1≤i≤n/2),當然,這是小根堆,大根堆則換成>=號。k(i)相當於二叉

原创 PHP對觀察者模式的原生支持

<?php // 觀察者模式 // PHP(SPL)原生支持 /* 類摘要 SplSubject { abstract public void attach ( SplObserver $observer ); abstract pu

原创 適配器模式之接口適配

<?php // 適配器模式-接口適配 /** * 問題:實現此接口的類需要實現所有的方法,但是實際使用的僅僅是其中的某一個方法而已,比較繁瑣 * 解決方法:增加一箇中間類,對所有的方法空實現,然後不再直接實現接口而是繼承這個中間類

原创 外觀模式

<?php // 外觀模式 function echoLine($msg) { echo $msg, '<br/>'; } /** * 外觀模式是一個十分簡單的概念,它只是爲一個分層或一個子系統創建一個單一的入口。這會帶來很多好處

原创 適配器模式之類適配

<?php // 適配器模式-類適配 /** * 需要被適配的類 * 需求:給 Source 新增一個新的方法但又不修改 Source 的源代碼 */ class Source { public function action(

原创 代理模式

<?php // 代理模式 function echoLine($msg) { echo $msg, '<br/>'; } interface Sourceable { function method(); } // 被代理對象

原创 訪問者模式

<?php // 訪問者模式 interface Visitor { public function visit(Subject $subject); } interface Subject { public function ac

原创 命令模式的簡單實現

<?php // 命令模式 interface Command { public function execute(); } /** * concrete command, 具體的命令 */ class ConcreteComm

原创 策略模式

<?php // 策略模式 interface Calculator { public function calc($a, $b); } /** * add strategy */ class AddCalculator imp

原创 單例模式

<?php // 單例模式 class Singleton { protected static $ins = null; /** * 禁止子類重載 __construct() 構造方法 */ private final

原创 組合模式實現方式一

<?php // 組合模式 function echoLine($msg) { echo $smg, '<br/>'; } interface Component { public function doAction(); }