php设计模式
coder_up
这世上从来没有的两件事: 一是怀才不遇, 怀才一定会遇, 没遇只能说明才不够; 二是情深缘浅, 缘浅只能说明情不够深, 或者根本就没情。。。
展开
-
使用php标准库spl在实现观察者模式
上次使用了纯php实现了一个观察者模式(php观察者模式), 现在使用php标准库spl在次实现观察者模式,好处是:随意的生成您想使用的观察者!<?php/** * Created by PhpStorm. * User: evolution * Date: 14-12-27 * Time: 下午5:50 */class Login implements SplSubject原创 2014-12-27 18:28:35 · 2317 阅读 · 0 评论 -
PHP设计模式之策略模式
1.概念 策略模式:将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,这种模式就是策略模式2.功能 使用策略模式实现Ioc, 依赖倒置, 控制反转3.举例 假如一个电商网站系统,针对不同的人群要跳转到不同的商品类目,并且所有广告位展示不同的广告4.要解决的问题 1.不会因为上下文的改变而改变代码(传统都是使用 if else 来判断) 2.如果新增加一种类型的原创 2015-07-12 13:39:10 · 967 阅读 · 0 评论 -
php 3种基本设计模式的组合使用
1.1 工厂模式,工厂方法或者类生成对象,而不是在代码直接new class Factory{ static function getDatabase(){ return new Mysql($host, $user, $pass); } } #使用 Factory::getDatabase();1.原创 2015-07-11 14:05:16 · 924 阅读 · 0 评论 -
PHP设计模式之适配器模式
1.说明 1.适配器模式: 可以将截然不同的函数接口封装成统一的API 2.实际应用举例,PHP的数据库操作有mysql, mysqli, pdo3种,可以用适配器模式统一成一致。类似的场景还有cache适配器,就是将memcache,redis,file,apc等不同的缓存函数统一成一致的 3.下面的例子可以帮助你对付各种数据库链接功能,mysql mysqli, pdo随便选,原创 2015-07-12 13:47:00 · 866 阅读 · 0 评论 -
php设计模式之装饰器模式
1.介绍 1.装饰器模式(Decorator),可以动态地添加修改类的功能 2.一个类提供了一项功能,如果要在修改并添加额外的功能,传统的编程模式,需要写一个子类继承它,并重新实现类的方法 3.使用装饰器模式,仅需在运行时添加一个装饰器对象即可实现,可以实现最大的灵活性。2.实例 接下来我们举一个例子,使用php实现一个小画板的功能(画指定颜色图形)1.没使用装饰器之前的传统原创 2015-07-13 18:22:17 · 898 阅读 · 0 评论 -
php设计模式之迭代器模式
1.概念介绍 1.迭代器模式:在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素。 2.相比于传统的编程模式,迭代器模式可以隐藏遍历元素的所需的操作。 3.这里介绍的迭代器需要实现(implements)PHP SPL 里面的Iterator,需要实现5个方法(current, next,valid,rewid,key)2.代码展示namespace braveclass A原创 2015-07-15 09:08:56 · 734 阅读 · 0 评论 -
php设计模式之命令链模式
1. 使用场景1. 命令连模式可以使用在用户登陆注册的时候处理不同角色用户的业务逻辑,与变量值 2. 代码实例<?php/** * command interface **/interface MyCommand{ public function onCommand( $name, $args );}//user registerclass Register{ p原创 2015-12-10 16:42:16 · 1972 阅读 · 0 评论 -
php设计模式之单例模式
首先明确一下单例模式:如果希望在系统中某个类的对象只能存在一个,那么单例模式是最好的解决方案。接下来让我们提炼出单例模式的几个关键点:假如有一个单例类,叫做 Singleton,那么:1 singletonObj 对象应该可以被系统中的任何对象使用2singletonObj 对象不应该被存储在会被覆写的全局变量中3系统中不应超过一个singletonObj对象,也就原创 2014-12-07 16:25:41 · 2246 阅读 · 0 评论 -
php设计模式之观察者模式
/** * Interface Observable * define a observable interface * @author jichao.wang */interface Observable{ function attach(Observer $observer); function detach(Observer $observer); f原创 2014-12-20 16:27:11 · 1567 阅读 · 0 评论