php设计模式

  • php设计模式 Proxy (代理模式)

    为其他对象提供一个代理以控制这个对象的访问 代理,指的就是一个角色代表另一个角色采取行动,就象生活中,一个红酒厂商,是不会直接把红酒零售客户的,都是通过代理来完成他的销售业务.而客户,也不用为了喝红酒而到处找工厂,他只要找到厂商在当地的代理就行了,具体红酒工厂在那里,客户不用关心,代理会帮他处理. 代理模式,就是给某一对象提供代理对象,并由代理对象控制具体对象的引用. 代理模式涉及的角色: 抽象主题角色,声明了代理主题和真实主题的公共接口,使任何需要真实主题的地方都能用代理主题代替. 代理主题角

    proxy, 代理模式, php设计模式April 6

  • php设计模式 State (状态模式)

    允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它所属的类 状态state模式是GOF23种模式中的一种,和命令模式一样,也是一种行为模式.状态模式和命令模式相当像,一样是"接口-实现类"这种模式的应用,是面向接口编程原则的体现. 状态模式属于对象创建型模式,其意图是允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了他的类.比较常见的例子是在一个表示网络连接的类TCPConnection,一个TCPConnection对象的状态处于若干不同的状态之一:连接

    state, php设计模式, 状态模式April 5

  • php设计模式 Adapter(适配器模式)

    将一个类的接口转换成客户希望的另外一个接口,使用原本不兼容的而不能在一起工作的那些类可以在一起工作 <?php /** * 适配器模式 * * 将一个类的接口转换成客户希望的另外一个接口,使用原本不兼容的而不能在一起工作的那些类可以在一起工作 */ // 这个是原有的类型 class OldCache { public function __construct() { echo "OldCache construct<br/>"; } public function

    php设计模式, AdapterApril 4

  • php设计模式 Singleton(单例模式)

    保证一个类仅有一个实例,并提供一个访问它的全局访问点 <?php /** * 单例模式 * * 保证一个类仅有一个实例,并提供一个访问它的全局访问点 * */ class Singleton { static private $_instance = null; private function __construct() { } static public function getInstance() { if(is_null(self::$_instance)) { self::$_inst

    singleton, php设计模式March 18

  • php设计模式 Builder(建造者模式)

    将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示 <?php /** * 建造者模式 * * 将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示 */ class Product { public $_type = null; public $_size = null; public $_color = null; public function setType($type) { echo "set product type<br/>

    Builder, php设计模式March 4

  • php设计模式 Command(命令模式)

    将一个请求封装为一个对象从而使你可用不同的请求对客户进行参数化,对请求排除或记录请求日志,以及支持可取消的操作 <?php /** * 命令模式 * * 将一个请求封装为一个对象从而使你可用不同的请求对客户进行参数化,对请求排除或记录请求日志,以及支持可取消的操作 */ interface Command { public function execute(); } class Invoker { private $_command = array(); public function setC

    command, php设计模式January 12

  • php设计模式 Bridge (桥接模式)

    将抽象部份与它实现部分分离,使用它们都可以有独立的变化 <?php /** * 桥接模式 * * 将抽象部份与它实现部分分离,使用它们都可以有独立的变化 */ abstract class Implementor { abstract public function operation(); } class ConcreteImplementorA extends Implementor { public function operation() { echo "ConcreteImple

    bridge, php设计模式January 10

  • php设计模式 Strategy(策略模式)

    定义一系列算法,把它们一个个封装起来,并且使它们可相互替换,使用得算法的变化可独立于使用它的客户 <?php /** * 策略模式(Strategy.php) * * 定义一系列算法,把它们一个个封装起来,并且使它们可相互替换,使用得算法的变化可独立于使用它的客户 * */ // ---以下是一系列算法的封闭---- interface CacheTable { public function get($key); public function set($key,$value); public

    php设计模式, StrategyDecember 8

  • php设计模式 Prototype (原型模式)代码

    用原型实例指定创建对象的种类.并且通过拷贝这个原型来创建新的对象 <?php /** * 原型模式 * * 用原型实例指定创建对象的种类.并且通过拷贝这个原型来创建新的对象 * */ abstract class Prototype { private $_id = null; public function __construct($id) { $this->_id = $id; } public function getID() { return $this->_id; } publ

    prototype, php设计模式September 24

  • php设计模式 Template (模板模式)

    定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构可以定义该算法的某些特定步骤 继承关系由于自身的缺陷,被专家们扣上了"罪恶"的帽子."使用委派关系代替继承关系","尽量使用接口实现而不是抽象类继承"等等专家警告,让我们这些菜鸟对继承"另眼相看".其实,继承还是有很多自身的优点所在.只是被大家滥用的似乎缺点更加明显了.合理的利用继承关系,还是能对你的系统设计起到很好的作用的.而模板方法模式就是

    php设计模式, template, 模板模式September 13

  • php设计模式 FlyWeight (享元模式)

    运用享元技术有效的支持大量细粒度的对象,需要的朋友可以参考下. 享元模式英文称为"Flyweight Pattern",我非常感谢将Flyweight Pattern翻译成享元模式的那位强人,因为这个词将这个模式使用的方式明白得表示了出来:如果翻译成为羽量级模式或者蝇量级模式等等,虽然可以含蓄的表现出使用此模式达到的目的,但是还是没有抓住此模式的关键. 享元模式的定义为:采用一个共享来避免大量拥有相同内容对象的开销.这种开销中最常见.直观的就是内存的损耗.享元模式以共享的方式高效的支持

    flyweight, php设计模式August 13

  • php设计模式 Decorator(装饰模式)

    动态的给一个对象添加一些额外的职责,就扩展功能而言比生成子类方式更为灵活 <?php /** * 装饰模式 * * 动态的给一个对象添加一些额外的职责,就扩展功能而言比生成子类方式更为灵活 */ header("Content-type:text/html;charset=utf-8"); abstract class MessageBoardHandler { public function __construct(){} abstract public function fi

    decorator, php设计模式July 23

  • php设计模式 Interpreter(解释器模式)

    php设计模式 Interpreter(解释器模式),需要的朋友可以参考下. <?php /** * 解释器 示例 * * @create_date: 2010-01-04 */ class Expression { function interpreter($str) { return $str; } } class ExpressionNum extends Expression { function interpreter($str) { switch($str) { case "0

    interpreter, php设计模式April 28

  • php设计模式 Chain Of Responsibility (职责链模式)

    为解除请求的发送者和接收者之间的耦合,而使用多个对象都用机会处理这个请求,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它 <?php /** * 职责链模式 * * 为解除请求的发送者和接收者之间的耦合,而使用多个对象都用机会处理这个请求,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它 * */ abstract class Handler { protected $_handler = null; public function setSuccessor

    php设计模式, ChainApril 26

  • php设计模式 Composite (组合模式)

    将对象组合成树形结构以表示"部分-整体"的层次结构,使得客户对单个对象和复合对象的使用具有一致性 <?php /** * 组合模式 * * 将对象组合成树形结构以表示"部分-整体"的层次结构,使得客户对单个对象和复合对象的使用具有一致性 */ abstract class MenuComponent { public function add($component){} public function remove($component){} public f

    php设计模式, CompositeApril 5

  • php设计模式 Observer(观察者模式)

    定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新 能够便利地创建查看目标对象状态的对象,并且提供与核心对象非耦合的指定功能 <?php /** * 观察者模式 * * 定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新 * 能够便利地创建查看目标对象状态的对象,并且提供与核心对象非耦合的指定功能 * 插件系统 */ class Observerable { private $_obser

    观察者模式, Observer, php设计模式March 11

  • php设计模式之单例.多例设计模式的应用分析

    本篇文章是对php设计模式中的单例与多例设计模式的应用进行了详细的分析介绍,需要的朋友参考下 单例(Singleton)模式和不常见的多例(Multiton)模式控制着应用程序中类的数量.如模式名称,单例只能实例化一次,只有一个对象,多例模式可以多次实例化. 基于Singleton的特性,我们经常用Singleton配置应用程序并定义应用程序中可能随时访问的变量.但有时并不推荐使用Singleton,因为它生成了一个全局状态且 该单一根对象没有封装任何系统功能.多数情况下,会使单元测试和调试变得

    单例, php设计模式, 多例February 23

  • php设计模式 Factory(工厂模式)

    定义一个用于创建对象的接口,让子类决定将哪一个类实例化,使用一个类的实例化延迟到其子类 <?php /** * 工厂方法模式 * * 定义一个用于创建对象的接口,让子类决定将哪一个类实例化,使用一个类的实例化延迟到其子类 */ /* class DBFactory { public static function create($type) { swtich($type) { case "Mysql": return new MysqlDB(); break; case &quo

    php设计模式, FactoryJanuary 23

  • php设计模式 DAO(数据访问对象模式)

    数据访问对象(Data Access Object) 示例 ,学习php的朋友可以参考下. <?php /** * 数据访问对象(Data Access Object) 示例 * * @create_date: 2010-01-04 */ class BaseDAO { var $_db = null; var $_table = null; function BaseDAO($config) { $this->_db = new MysqlDB(); // 这里的不能进行操作 } /** *

    dao, php设计模式January 22

  • php设计模式 Mediator (中介者模式)

    用一个中介对象来封装一系列的对象交互,使各对象不需要显式地相互引用从而使其耦合松散,而且可以独立地改变它们之间的交互 <?php /** * 中介者模式 * * 用一个中介对象来封装一系列的对象交互,使各对象不需要显式地相互引用从而使其耦合松散,而且可以独立地改变它们之间的交互 */ abstract class Mediator { abstract public function send($message,$colleague); } abstract class Colleague {

    mediator, php设计模式December 7

  • php设计模式实战之--观察者模式

    观察者模式用于一个对象改变状态时通知其他对象 以错误处理为例: 1.错误处理中心 2.观察者服务端 利用notify方法, 通过调用其他类的update方法来通知其他类 3.客户端 错误抽象类 写文件方式客户端 继承抽象类 发邮件方式客户端 继承抽象类 代码实例: <?php /** * 观察处理 */ class Observer { private $lists = array(); public function notify($msg) { foreach($this->lists a

    设计模式, php设计模式October 28

  • php设计模式之单例模式的实例代码

    php单例模式:简单的说,一个对象只负责一个特定的任务. 单例类: 1.构造函数需要标记为private,单例类不能再其他类中实例化,只能被其自身实例化 2.拥有一个保存类的实例静态成员变量 3.拥有一个访问这个实例的公共的静态方法.[常用getInstance()方法进行实例化单例类,通过instanceof操作符可以检测到此类是否已经被实例化] 注:需要创建__clone()方法防治对象被复制 作用: 1.php的应用主要用于数据库,所以一个应用中会存在大量的数据库操作,使用单例模式,则可以

    单例模式, php设计模式May 27