PHP-浅谈单例模式和工厂模式

PHP中常用的设计模式有单例模式、工厂模式(简单工厂模式、工厂方法模式和抽象工厂方法模式)、适配模式、策略模式。

单例模式用于在程序中创建一个单一功能的访问点,简单说就是实例的对象是唯一的。因此有几点需要注意:

1、需定义一个构造器,且构造器的作用域需定义为private,即无法在其他调用中直接new一个对象

2、需定义一个静态变量,当作被调用类的实例对象

3、需定义一个静态方法,用于外部调用获取该类的实例静态对象,在这个方法中,返回一个对象引用

例子:

public class School{

    private static $school; //定义一个静态私有变量,用于存储该类中唯一一个实例对象;

    private  function __constrcut(){} //定义私有构造器,防止外部调用时实例化该类

    public static function getInstance(){  //使用getInstance()创建对象

       if(empty(self::$school)){self::$school = new self();}

        return self::$school; //往外部调用返回此类的唯一对象引用

    } 

}

工厂模式是一个类,通过调用该类获取某些类的实例对象,而不需要在方法中直接new一个对象,好处是单一控制对象,避免出现修改对象类型时,遗漏修改调用的地方。只需要通过修改工厂类中的对象,则调用工厂类的所有地方就自动修改了

例子:

定义一个类,在里面定义一个方法,通过传入不同的参数, 获取不同类的对象

public class School{

    public static function getObject($objectName){

        switch ($objectName){

            case 1 : return One::getInstance();break;

            case 2 : return new A();break;

            case 3 : return new B();break;

        }

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,780评论 18 399
  • 前言 本文主要参考 那些年,我们一起写过的“单例模式”。 何为单例模式? 顾名思义,单例模式就是保证一个类仅有一个...
    tandeneck阅读 2,541评论 1 8
  • 忙碌了一周多,主讲教师体恤我们多日辛苦,给我们放一天假。于是我们几个同事觉得当天去长影世纪城逛逛(我们知道的景点也...
    闹市闲民阅读 877评论 0 1
  • 其实有时候会真的烦,尤其是周六加班,周日晚上又催问各种事项的时候。我没有把自己所有时间都卖出去,好吧。
    里程_历程阅读 148评论 0 0