PHP中的设计模式

设计模式

可以理解为解决问题的"套路"

工厂模式

总是需要去实例化很多的类来得到对象,这时就可以设计出一个工厂(其实就是一个类),该工厂的左右就是为人们"生产"各种对象。这种工厂通常只要指定类名,就可以据此获取一个该类的对象。

<?php
    class factory{
        //Instance实例
        static function getInstance($className){
            //安全操作,判断是否存在这个类文件,以此来保证能创建该类
            if(file_exists('./class/'.$className.".class.php")){
                $obj1 = new $className();
                return $obj1;
            }else{
                return null;
            }
        }
    }
    $obj1 = factory::getInstance("A");//获取类A的一个对象
?>

单例模式

程序从启动到结束这个生命周期中只需要这一个对象,内存中只有这一份对象内存,多次创建时也只是这一个对象。

步骤:

  1. 私有化一个静态变量,用于存储创建当前对象
  2. 私有化构造方法,禁止调用
  3. 创建静态方法,用于实例化对象,如果第一步已经有值就用 ,没有重新创建
  4. 私有化clone方法,禁止调用
<?php
     //单例模式:思路是类内部会存储一个自己的对象,每次去取存储的那个对象
     class B{
        public $v1 = 10;
        //存储已经创建过的B对象
        private static $instance;
        private function __construct(){}
        public static function getNew(){
            if(!isset(B::$instance)){
                B::$instance = new self;
            }
            return B::$instance;
        }
                //禁止克隆,克隆会重新创建对象
        private function __clone(){}
     }
     $o1 =  B::getNew();
     $o1->v1 = 20;
     $o2 =  B::getNew();
     $o2->v1 = 40;
     var_dump($o1,$o2);
//打印结果:object(B)#1 (1) { ["v1"]=> int(40) } object(B)#1 (1) { ["v1"]=> int(40) } 
?>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文主要讨论下 Web 开发中,准确而言,是 PHP 开发中的相关的设计模式及其应用。有经验的开发者肯定对于设计模...
    guanguans阅读 109评论 0 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,754评论 18 399
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 3,970评论 1 15
  • 原文链接:http://blog.csdn.net/zhangerqing http://www.cnblogs....
    孤独杂货铺阅读 1,530评论 0 3
  • 那个神采飞扬的骄傲少年,在23岁的年纪,变成一个为了几毛钱的利润而抱怨颓废的便利店老板。 小影小时候一直觉得自己长...
    孟园阅读 443评论 0 1