自己对设计模式的理解:工厂模式和单例模式

一、工厂模式:个人总结
class  Factory
{
static function createObject($par)
{
if ($par == 1) {
$test1 = new Object1();
} elseif ($par == 2) {
$test2 = new Object2();
} else {
$test3 = new Object3();
}
}
}


// 在另外一个类中调用
class Test
{
//工厂模式,根据不同的参数,new出不同的对象
Factory::createObject(1);
Factory::createObject(2);
Factory::createObject(3);
}

二、单利模式

实现单例的条件:三私一公

   三私:私有化构造方法:不让外部创建对象


    私有化克隆方法:不让外部克隆对象


    私有静态属性:保存已经产生的对象


   一公:公共静态方法:在类内部创建对象

实例:

<?php

    //单例模式:一个类只能创造一个对象

    class Single{
        //属性
        private $name;
        public static $counts = 0;

        //定义一个静态属性来保存对象
        private static $single;
        
        //私有化构造方法
        private function __construct($name){
            $this->name = $name;
            //计数
            self::$counts++;
        }

        //私有化克隆方法
        private function __clone(){
            //计数
            self::$counts++;
        }

        //静态方法,让类进入到类的内部进行实例化得到对象
        public static function getInstance($name){
            //判断对象是否已经存在,如果存在则直接返回原来对象,否则创造新对象
            if(self::$single){
                //对象已经存在,返回原来对象
            }else{
                //对象不存在
                self::$single = new Single($name);
            }

            //返回对象
            return self::$single;
        }
    }

    //实例化
    //$single = new Single('林志炫');

    //访问类对象数量
    //echo Single::$counts;

    //得到对象
    $single = Single::getInstance('马云');
    var_dump($single);

    //访问类对象数量
    echo Single::$counts;

    //得到对象
    $single = Single::getInstance('马化腾');
    var_dump($single);

    //访问类对象数量
    echo Single::$counts;

优点:只能创建一个对象,可节省内存资源


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值