zoukankan      html  css  js  c++  java
  • PHP工厂模式

    【Single.class.php】

    <?php
    /**
     * 单例模式
     * 使某个类的实例仅允许创建一个
     */
    
    class Single
    {
        private static $ins; //保存对象的静态属性
    
        //私有的构造方法,屏蔽了外部new操作
        private function __construct()
        {
        }
    
        //禁止克隆
        private function __clone()
        {
        }
    
        public static function getInstance()
        {
            if (!(self::$ins instanceof self)) {
                self::$ins = new self();
            }
            return self::$ins;
        }
    
        public function output()
        {
            return "单例模式输出...";
        }
    }

    【Factory.class.php】

    <?php
    /**
     * 工厂模式
     * 使用工厂方法或者类生成对象,而不是在代码中直接new操作
     */
    
    class Factory
    {
        public static function getSingleOutput()
        {
            //Single类未使用单例模式之前可以如下调用
            //$obj = new Single();
    
            //Single类使用了单例模式之后,只能用下面的方法调用
            //不管调用多少次,在Single类中都只会new一次
            $obj = Single::getInstance();
            $obj2 = Single::getInstance();
    
            return '工厂模式--'.$obj->output();
        }
    
    }

    【调用】

    ////【工厂模式】
    //如果需要调用Single类的output方法,现在只需要调用Factory::getSingleOutput即可
    //假设 Single::output 方法的名称或参数要修改,只需要修改Factory::getSingleOutput即可
    //其他各种地方调用 Factory::getSingleOutput 的代码都不需要修改
    echo Factory::getSingleOutput() . '<br>';
  • 相关阅读:
    AO-XXXX
    最基础的rpm命令
    yum插件
    adjtimex修改tick值用法举例
    [工具]iostat
    chrony配置介绍
    CentOS / RHEL 7 : Chrony V/s NTP (Differences Between ntpd and chronyd)
    NTP测试1
    shell使用eval进行赋值bc计算,bad substitution
    Free中的buffer和cache理解
  • 原文地址:https://www.cnblogs.com/rxbook/p/10385170.html
Copyright © 2011-2022 走看看