单例模式:防止重复实例化,避免大量的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】单例模式和工厂模式的更多相关文章

  1. PHP模式设计之单例模式、工厂模式、注册树模式、适配器模式、观察者模式

    php模式设计之单例模式 什么是单例模式? 单例模式是指在整个应用中只有一个实例对象的设计模式 为什么要用单例模式? php经常要链接数据库,如果在一个项目中频繁建立连接数据库,会造成服务器资源的很大 ...

  2. PHP 面向对象编程和设计模式 (3/5) - 单例模式和工厂模式

    PHP高级程序设计 学习笔记 2014.06.11 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容 ...

  3. 10月27日PHP加载类、设计模式(单例模式和工厂模式)、面向对象的六大原则

    加载类可以使用include.require.require_once三种中的任意一种,每个关键字都有两种方法,但是这种方法的缺点是需要加载多少个php文件,就要写多少个加载类的方法.一般也就需要加载 ...

  4. php部分---面向对象,设计模式(单例模式、工厂模式)、oop六大原则;

    一.单例模式目的:为了控制对象的数量(只能够有一个,相当于类的计划生育)做法1.将类的构造函数做成私有的2.在类里面做了一个公有的函数来造对象3.将该函数变为静态的4.在函数里面加控制 class R ...

  5. php单例模式与工厂模式

    单例模式:单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的. 所有的单例模式至少拥有以下三种公共元素:1. 它们必须拥有一个构造函数,并且必须被标记 ...

  6. js的数据类型:单例模式,工厂模式,构造函数

    js数据类型 基本数据类型:string   undefined   null  boolean  number 引用数据类型  Object  array  function 二者的区别 基本数据类 ...

  7. PHP设计——单例模式与工厂模式

    一.单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的.所有的单例模式至少拥有以下三种公共元素:1. 它们必须拥有一个构造函数,并且必须被标记为pri ...

  8. php 单例模式和工厂模式

    单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的.所有的单例模式至少拥有以下三种公共元素:1. 它们必须拥有一个构造函数,并且必须被标记为priva ...

  9. JAVA常用设计模式(一、单例模式、工厂模式)

    JAVA设计模式之单例模式 import java.util.HashMap; import java.util.Map; /** * 设计模式之单例模式 * 单例模式(Singleton Patte ...

随机推荐

  1. webpack.config.js配置遇到Error: Cannot find module '@babel/core'&&Cannot find module '@babel/plugin-transform-react-jsx' 问题

    下文是网上找到的方法,是因为版本冲突的原因,参照后安装7版本解决 cnpm install -D babel-loader@ babel-core babel-preset-env 一. 问题描述 在 ...

  2. selenium操作浏览器cookies

    package test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; imp ...

  3. spy-debugger 安装以及使用

    参考链接:https://github.com/wuchangming/spy-debugger

  4. sed memo 2

    配置文件注释过滤 示例文件 [user_00@txyun test]$ cat sed_test # comment aaaaaaaaaaa bbbb #comment cccc dddd fffo ...

  5. Linux定时任务调用sh文件

    1.编写sh文件 创建:vi test.sh 写入:date >> /xiaol/data.txt 2.默认创建的这个sh问件是没有执行权限的,修改权限 chmod 777 test.sh ...

  6. windows 中的类似于sudo的命令(在cmd中以另一个用户的身份运行命令)

    linux中我们习惯用sudo命令来临时用另一个用户的身份执行命令. windows中,通常我们需要用管理员权限执行命令的时候通常是 右键->run as administrator. 用着键盘 ...

  7. 《DRN: A Deep Reinforcement Learning Framework for News Recommendation》强化学习推荐系统

    摘要 新闻推荐系统中,新闻具有很强的动态特征(dynamic nature of news features),目前一些模型已经考虑到了动态特征. 一:他们只处理了当前的奖励(ctr);. 二:有一些 ...

  8. java基础语法-内部类与匿名内部类

    1.成员内部类(声明在类内部&&方法之外) class Person{ String name = "韩梅梅"; int age; class Bird{ Stri ...

  9. Linux防火墙iptables基础详解

    原文来自于:https://www.linuxidc.com/Linux/2017-01/140073.htm(引用自) 一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分 ...

  10. quartz相关记录

    1.http://www.quartz-scheduler.org/api/2.3.1-SNAPSHOT/ api地址 2.https://www.jianshu.com/p/3c3e166a7da1 ...