PHP 中的设计模式
来源:互联网 发布:淘宝争议处理规范2016 编辑:程序博客网 时间:2024/05/27 09:46
1.单例模式:某一个类只有一个实例,并且自行实例化并向整个系统提供这个实例。
三个要点:
(1)这个类只能有一个实例;
(2)必须自行实例化这个实例;
(3)自行向整个系统提供这个实例。
使用单例模式的原因:
(1)PHP 应用主要在于数据库应用,所以一个应用中会存在大量的数据库操作,在使用面向对象的方式开发时,使用单例模式可以避免大量的 new 操作消耗资源;
(2)如果系统中需要有一个类来全局控制某些配置信息,则使用单例模式就可以很方便的实现,可以参看zend Framework 的 FrontController 部分;
(3)再一次页面请求中便于进行调试,因为所有代码都集中在一个类中,然后可以在类中设置钩子,输出日志,从而避免到处 var_dump、echo;
(4)可以节省内存,因为单例模式限制了实例对象的个数。
下面是一个简单的例子,仅供参考:
/**声明一个类 DB,用于演示单态模式的使用*/class DB {private static $obj = null; //声明一个私有,静态的成员属性$obj/*构造方法,使用 private 封装后则只能在类的内部使用 new 去创建对象*/private function __construct() {//在这个方法中去完成一些数据库连接等操作echo "数据库连接成功";}//只有通过该方法才能返回本类的对象,该方法是静态的,用类名调用static function getInstance() {if (is_null(self::$obj)) {self::$obj = new self(); //实例化本类对象}return self::$obj; //返回本类的对象}//完成对数据库的一些操作function query($sql) {echo $sql;}}//只能使用静态方法 getInstance() 去获取 DB 类的对象$db = DB::getInstance();//访问对象中的成员$db->query("select * from user");
2.工厂模式:是一种类,有创建对象的某些方法的作用。可以使用该模式创建对象,而不直接使用 new,这样如果想要更改所创建的对象类型,只需更改工厂即可。
要点:抽象基类中定义抽象一些方法,用以在子类中实现;子类实行该抽象基类中的抽象方法,工厂类则用以实例化所有相对应的子类。
3.观察者模式:一个对象通过添加一个方法是本身变得可观察。当可观察的对象更改时,他会将消息发送到已注册的观察者。
4.策略模式:该模式非常适合复杂数据管理系统或数据处理系统,二者在数据筛选、搜索或处理的方式方面需要较高的灵活性。
5.命令链模式:该模式以松散耦合主题为基础,发送消息、命令和请求,或通过一组处理程序发送任意内容。每个处理程序都会判断自己能否处理请求。如果可以,该请求被处理,进程停止。为处理请求而创建可扩展的架构时,命令链模式很有价值,使用它可以解决许多问题。
- PHP 中的设计模式
- PHP中的设计模式
- PHP 中的设计模式详解
- PHP 中的设计模式详解
- PHP 中的设计模式详解
- PHP 实战之设计模式:PHP 中的设计模式
- PHP 实战之设计模式:PHP 中的设计模式
- php中的设计模式之--适配器模式
- php中的设计模式之--命令模式
- php中的设计模式之--迭代器模式
- php中的设计模式之--策略模式
- php中的设计模式之--代理模式
- php中的设计模式之--中介模式
- php中的设计模式之--观察者模式
- php中的设计模式之--门面模式
- atitit.php中的dwr 设计模式
- PHP中的三种基本设计模式
- php中的设计模式之--抽象工厂模式
- 使用jsoup选择器来查找元素
- 11 为什么会有String,StringBuffer,StringBuilder及区别?耗时比较
- Android中经典蓝牙开发步骤 (流程)
- 9 个让 JavaScript 调试更简单的 Console 命令
- mfc中加logo以及背景图
- PHP 中的设计模式
- C\C++中iterator与const_iterator及const iterator区别
- TortoiseSVN中分支和合并实践
- 生辰
- js总结
- 数据泵expdp导出时间很长,导出速度很慢
- Python+Selenium实现微博自动化爬虫
- 剑指offer(动态规划-LeetCode72)
- 如何写出高效C++(构造/析构/赋值运算)