• 技术文章 >后端开发 >PHP问题

    php工厂模式和单例模式区别

    藏色散人藏色散人2019-10-09 10:27:31原创1010

    php工厂模式和单例模式区别

    单例模式:防止重复实例化,避免大量的new操作,减少消耗系统和内存的资源,使得有且仅有一个实例对象

    header("Content-type: text/html; charset=utf-8");   //定义字符编码,防止乱码
    /**
     * 单利类
     */
    class Single
    {
        private static $_instance;  //保存实例的对象
     
     
        private function __construct()  //定义构造方法
        {
     
        }
     
        private function __clone()  //定义一个空方法防止被外部克隆
        {  
     
        }
     
     
        public static function getInstance()    //定义一个获取实例对象的方法
        {
            if (!(self::$_instance  instanceof Single)) {
                self::$_instance = new self();
            }
            return self::$_instance;        //返回实例对象
        }
     
        /**
         * 测试方法
         */
        public function test()
        {
            echo "单利模式";
        }
     
    }
     
     
    $run=Single::getInstance();
    $run->test();

    工厂模式:用工厂方法代替new操作的一种模式,如果需要更改所实例化的类名,只需在工厂方法内修改,不需逐一寻找代码中具体实例化的地方

    header("content-type:text/html;charset=utf-8"); //定义字符编码,防止乱码
    /**
     * 测试类一
      */
    class demo1
    {
        //定义一个test1方法
        public function test1()
        {
            echo '这是demo1类的test1方法'.PHP_EOL;
        }
    }
    /**
     * 测试类二
      */
    class demo2
    {
        //定义一个test2方法
        public function test2()
        {
            echo '这是demo2类的test2方法'.PHP_EOL;
        }
    }
    /**
     * 工厂类
     */
    class Factoty
    {
        // 根据传参类名,创建对应的对象
        static function createObject($className)
        {
            return new $className();
        }
    }
    /**
     * 通过传类名,调用工厂类里面的创建对象方法
     */
    $demo = Factoty::createObject('demo1');
    $demo->test1();             //输出这是demo1类的test1方法
    $demo = Factoty::createObject('demo2');
    $demo->test2();            //输出这是demo2类的test2方法

    更多PHP知识,请访问PHP中文网

    以上就是php工厂模式和单例模式区别的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:php的优势是什么 下一篇:php的英文全称是什么
    PHP编程就业班

    相关文章推荐

    • 三种php工厂模式的简单介绍• PHP设计模式:php工厂模式的介绍(附代码)• 什么是php工厂模式• php什么时候使用单例模式

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网