• php 单例模式和工厂模式


    php 单例模型就是在程序中建一个唯一的访问点 也是是说实例化出来的对象是唯一的

    <?php
    class ren
    {
        public $name;
        private static $dx; // 存储对象
      private   function  __construct()
    {
    } 
       public static function xianshi()   //私有的方法是无法实例化的 需要建一个公有的方法来实现
    {
       if(empty(self::$dx))
       {
              return self::$dx=new ren();
       }
      return self::$dex;
    }
    }
    
    $r=ren:: xianshi();
    $r->name="张三";
    var_dump($r)
    ?>

    工厂模式  就是一种类,具有一定的安全性,而且操作也比较方便

    //这种方法可能是我们最先考虑到的 但是如果扩展的话是不安全的
    <?php
    
     class yunsuan 
    {
        public $a;
        public $b;
       function jia()
    {
       return $this->a + $this->b;
    }
       function jian()
    {
        return $this->a - $this->b;
    }
    }
    ?>
    //可以采用重写的方法来扩展,比较安全,但是如果是大容量的改写还是会比较麻烦
    <?php
    
    class yunsuan 
    {
       public $a;
       public $b;
       function suan()
    {
         echo"这是一种运算方法":
    }
    }
    
    class jia extends yunsuan
    {
        function suan()
    {
         return $this->a + $this->b;
       }
    } class jian extends yunsuan { function suan()
    {
         return $this->a - $this ->b;
    }
    }
    ?>
    //这里我们直接用工厂模式来存储 比较简单一些
    
    <?php
    
    class gongchang
    {
       static  function chanpin($name)
       {
            switch ($name)
            {
                    case"+":
                    return new jia();
                    break;
                    case"-":
                    return new jian()
                    break;
                    default:
                     return false;
            }
       }
    }
    $gong= gongchang:chanpin("");
    var_dump($gong)
    ?>
  • 相关阅读:
    配置struts2拦截器
    <global-results>标签来定义全局的<result>
    StringUtils.isEmpty和StringUtils.isBlank用法
    Tomcat xxx unbound
    getRequestDispatcher()和response.sendRedirect()
    转 intValue()的用法
    jspf与jsp的区别
    table标签中thead、tbody、tfoot的作用
    hibernate的cascade
    hibernate 持久化对象的三个状态
  • 原文地址:https://www.cnblogs.com/xiaodouding/p/6405024.html
Copyright © 2020-2023  润新知