php面向对象(工厂模式与单例模式)

今天刚学习了php的设计模式,一个是工厂模式而另一个是单例模式,工厂模式设计出来就是为了一种方便创建对象而做出来的。还有一个是单例模式,单例模式的设计有些比较难以理解,我们必须一步一步的分析:单例类的情况必须去创建类的实例,而且必须只有一个,首先没有对象实例的情况就是将它的构造器私有化,代码是这样子的:private function __construct(){} 。第二步就是写一个方法,去只生成一个对象就返回而有的话就直接返回。这个我把整个的代码贴下:

 class A{};
            class B{};            
            class WorkStation {  /* 工厂类 */
                static function GetObject($className)
                {
                    $obj = new $className();
                    return $obj;
                }
            }
            $o1 = WorkStation::GetObject("A");
            $o2 = WorkStation::GetObject("B");
            var_dump($o1); var_dump($o2);                                                                     
            echo "<hr>";
            
            class Single {  /* 单例模式只允许创建类的对象 */
                    private function __construct()
                    {                        
                    }
                    
                    static $instance = null;
                    static function GetObject($className)
                    {
                        if (!isset(self::$instance)) /* 如果生产的实例未空 */
                        {
                            $obj = new $className();
                            self::$instance = $obj;
                            return self::$instance;                                                         
                        }else{                                                        
                            return self::$instance;                                                        
                        }
                    }                                        
            }
            
            $singleA = Single::GetObject("A");
            $singleB = Single::GetObject("A");
            var_dump($singleA);var_dump($singleB);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值