`
davinci_2012
  • 浏览: 13277 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

php 常用的两个设计模式

阅读更多
  1. 工厂模式

  工厂模式提供了一个在实时状态下实例化对象的机制。
<?php
class creditCardProcessor
{
    public static function factory($provider)
    {
        switch ($provider)
        {
            case 'Verisign':
                //include "Verisign.php";
			    echo 'Verisign.php';
                break;
            case 'PayPal':
                //include "Paypal.php";
			    echo 'Paypal.php';
                break;
            default:
                exit("Invalid CC Provider");
      }
      return new $provider;
    }
}
$cc = creditCardProcessor::factory('PayPal');
?>


  运行结果如下图所示:


  2. 单例模式

  单例模式在确保只有一个实例运行时使用,也可以用来防止类通过clone来复制。

class dbMysgl
{
    private static $conn;
    private function __construct()
    {
        $this->conn = mysql_connect(host, login, pass);
    }
    public static function singleton()
    {
        if(!self::$conn)
        {
            $c = __CLASS__;
            self::$conn = new $c;
        }
        return self::$conn;
    }
    public function __clone()
    {
        trigger_error("Only one connection may exist");
    }
}
$db = new dbMysgl();        // 失败
$db = dbMysgl::singleton(); // 使用的正确方法
$db2 = clone($db);          // 失败



转载地址:http://www.xuekaifa.com/article/20100626/000067.html


分享到:
评论
4 楼 tonyseek 2011-05-04  
何必 switch 呢,PHP 和 Python 一样可以动态实例化的。
关于常用设计模式,官网手册也有说明。
我只是觉得,由于 PHP 只有 Request 的生命期,所以所谓的单例模式并不是真正的单例。
而我们也不必把 Java 中的设计模式实现习惯照搬 PHP 中,如果要“单例”,写一个只有静态方法和静态属性的类就是单例了。这个在 Java 或者 Python 的 Web 应用都做不到的,因为只有 PHP 会以 Request 为最大请求周期。
3 楼 Speak-shuai 2011-05-03  
我也不是很明白
2 楼 llkk0914 2011-03-08  
mysql 集群是什么意思呢?
谁能给详细的介绍一下呢?
1 楼 hxangel 2011-03-01  
不是很明白

相关推荐

    PHP设计模式 ((美)Aaron Saray) 中文pdf扫描版

    (附带源代码)PHP设计模式 ((美)Aaron Saray) 中文pdf扫描版,有两种常见的PHP设计模式书,一个是learning php设计模式,另一本就是当前资源。

    PHP设计模式之模板方法模式实例浅析

    本文实例讲述了PHP设计模式之模板方法模式。分享给大家供大家参考,具体如下: 定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板...

    中文版的PHP高级程序设计、模式、框架与测试第一部分共两部分

    由于CSDN不允许一次上传超过20兆的文件,我只能传上来两个文件。这个是第一部分的文件。只有都下载完毕才能成功解压缩。 总共需要资源分9分,不过如果大家都回复的话,能够回收11分资源分。 不便之处敬请原谅。 ...

    PHP设计模式之适配器模式原理与用法分析

    本文实例讲述了PHP设计模式之适配器模式原理与用法。分享给大家供大家参考,具体如下: 一、什么是适配器模式 适配器模式有两种:类适配器模式和对象适配器模式。其中类适配器模式使用继承方式,而对象适配器模式...

    design-pattern:php中的设计模式示例

    每个文件夹中有两个文件用于特定的设计模式,名为 problem.php 和 solution.php。 problem.php 展示了问题,solution.php 包含该特定模式建议的解决方案代码。 没有对模式或示例的解释。 要学习设计模式,请访问 。...

    PHP100视频教程全集112集BT种子【PHP经典】

    PHP100视频教程58:快速设计一个企业网站之BIWEB PHP100视频教程59:关于BIWEB常见问题和结构分析 PHP100视频教程60:PHP与数据库代码开发规范 PHP100视频教程61:PHP+Mysql新闻系统的开发一 PHP100视频教程62:...

    php基础设计模式大全(注册树模式、工厂模式、单列模式)

    废话不多说了,先给大家介绍注册树模式然后介绍工厂模式最后给大家介绍单列模式,本文写的很详细,一起来学习吧。 php注册树模式 什么是注册树模式?  注册树模式当然也叫注册模式,注册器模式。之所以我在这里...

    design-patterns-php:PHP中的设计模式示例

    每个模式都包括两个示例: 概念示例显示了模式的内部结构,包括详细的注释。 RealWorld示例展示了如何在现实世界PHP应用程序中使用模式。 要求 这些示例需要PHP 7.3和更高版本,尽管它们可以在旧版本PHP中轻松...

    php设计模式之委托模式

    委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。委托模式是一项基本技巧,许多其他的模式,如状态模式、策略模式、访问者模式...

    php设计模式

    压缩包里有两个文件,一个是pdf的原版英文书籍,一个是phpchina的朋友翻译的。

    design-patterns-php:PHP中的设计模式

    我还向您推荐两个具有设计模式的出色网站: 我见过(必须看到)的有关该主题的最佳材料: https : //refactoring.guru/design-patterns 很棒的代码示例(始终更新为PHP的最新版本): ...

    学习php设计模式 php实现桥梁模式(bridge)

    此接口不一定和抽象化角色的接口定义相同,实际上,这两个接口可以完全不同。实现化角色应当只给出底层操作,而抽象化角色应当只给出基于底层操作的更高一层的操作。 具体实现化(Concrete Implementor)角色:实现...

    PHP设计模式之抽象工厂模式实例分析

    本文实例讲述了PHP设计模式之抽象工厂模式。分享给大家供大家参考,具体如下: 前面的文章说了PHP下的简单工厂(静态工厂) 和工厂模式,现在说一下抽象工厂模式 工厂模式我们已经说过,增加一个产品很简单,增加...

    PHP设计模式入门之状态模式原理与实现方法分析

    本文实例讲述了PHP设计模式入门之状态模式原理与实现方法。分享给大家供大家参考,具体如下: 想必大家都用过自动售卖的自动饮料机吧,塞入硬币或纸币,选择想要的饮料,饮料就会在机器的下方滚出。大家有没有相关...

    PHP设计模式(六)桥连模式Bridge实例详解【结构型】

    本文实例讲述了PHP设计模式:桥连模式Bridge。分享给大家供大家参考,具体如下: 1. 概述  在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向...

    PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析

    这个数据访问对象模式主要就是描述了如何创建透明访问数据源的对象,这种设计模式对于同时学过PHP和MySQL的人来说,是一个全新的和令人兴奋的概念,并且这种设计模式的目的就是为了解决重复与数据源抽象化这两种特定...

    PHP设计模式之注册树模式分析

    像前两篇一样,我们这 篇依旧是从名字入手。注册树模式通过将对象实例注册到一棵全局的对象树上,需要的时候从对象树上采摘的模式设计方法。 这让我想起了小时候买糖葫芦,卖糖葫芦的将糖葫芦插在一个大的杆子上,...

    PHP设计模式之 策略模式Strategy详解【对象行为型】

    本文实例讲述了PHP设计模式之 策略模式Strategy。分享给大家供大家参考,具体如下: 1.概述  在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法...

    php设计模式之组合模式实例详解【星际争霸游戏案例】

    本文实例讲述了php设计模式之组合模式。分享给大家供大家参考,具体如下: 星际里面我们可以下载别人制作的地图,或者自己做地图玩。 我们在选择玩哪张地图的时候,可以看到游戏列出当前地图包里面的地图或地图包的...

    php设计模式之适配器模式实例分析【星际争霸游戏案例】

    本文实例讲述了php设计模式之适配器模式。分享给大家供大家参考,具体如下: 星际的很多兵种,都有至少一项特殊技能。而且有些兵种的技能是相同的,比如虫族部队都会恢复血。 如果按照一般的思路,把技能的操作和...

Global site tag (gtag.js) - Google Analytics