单例模式:
单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的。

所有的单例模式至少拥有以下三种公共元素:
1. 它们必须拥有一个构造函数,并且必须被标记为private
2. 它们拥有一个保存类的实例的静态成员变量
3. 它们拥有一个访问这个实例的公共的静态方法

代码:

<?php
class ren
{public $name;private static $dx;//存储对象
//声明一个私有的实例变量private function __construct()//声明私有构造方法为了防止外部代码使用new来创建对象。
    {}public static function duixiang(){if(empty(self::$dx))//self关键字调用静态类;静态方法不需要实例化直接调用类->方法{//声明一个dx()静态方法,用于检测是否有实例对象self::$dx =  new ren();}return self::$dx;}
}
//$shili=new ren();//报错
//$shishi=new ren();
//两者不同
$r= ren::duixiang();$r->name = "xxx";
var_dump($r);
$r1 = ren::duixiang();
var_dump($r1);?>

工厂模式:

工厂模式就是一种类,具有为您创建对象的某些方法,这样就可以使用工厂类创建对象,而不直接使用new。这样如果想更改创建的对象类型,只需更改该工厂即可。

看代码:

这是一个普通的类,里面有一些方法

<?php
class yun
{public $a;public $b;function suan(){echo "运算";}
}
class jia extends yun//继承yun
{function suan()//重写
    {return $this->a+$this->b;}
}
class jian extends yun
{function suan(){return $this->a-$this->b;}
}
class cheng extends yun
{function suan(){return $this->a*$this->b;}
}
?>

然后写一个工厂类

<?php
class gongchang
{static function chanpin($name)//给一个参数,返回一个对象
    {switch ($name){case"+":
//表达式的值与结构中每个 case 的值进行比较。如果存在匹配,则执行与 case 关联的代码return new jia();break;case"-":return new jian();break;case"*":return new jia();break;}}
}
$aa = gongchang::chanpin("+");
//此处找到与+相匹配的方法
//给一个“*”的参数,给我返回一个类
var_dump($aa);
?>

转载于:https://www.cnblogs.com/xuan584521/p/6407201.html

php单例模式与工厂模式相关推荐

  1. 软件设计模式“单例模式”和“工厂模式”

    软件设计模式"单例模式"和"工厂模式" 单例模式 什么是单例模式 单例模式的实现方式有哪些 单例模式的优缺点 单例模式的应用场景 总结 工厂模式 什么是工厂模式 ...

  2. 创建型模式-单例模式、工厂模式

    目录 创建型模式特点 创建型模式分类 1.单例模式(Singleton Pattern) 单例介绍 代码演示 ①饿汉式(静态常量) ②饿汉式(静态代码块) ③懒汉式(线程不安全) ④懒汉式(线程安全, ...

  3. 设计模式——单例模式、工厂模式

    设计模式--单例模式.工厂模式 一.六大设计原则 开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭.在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热 ...

  4. java 工厂 单例_java 单例模式和工厂模式实例详解

    单例模式根据实例化对象时机的不同分为两种:一种是饿汉式单例,一种是懒汉式单例. 私有的构造方法 指向自己实例的私有静态引用 以自己实例为返回值的静态的公有的方法 饿汉式单例 public class ...

  5. 用最简单的例子说明设计模式(一)之单例模式、工厂模式、装饰模式、外观模式...

    设计模式 所谓设计模式,就是一套被反复使用的代码设计经验的总结(情境中一个问题经过证实的一个解决方案).使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性.设计模式使人们可以更加简单 ...

  6. 安卓中的单例模式和工厂模式

    单例模式 简单的来说,单例模式就是提供一个实例,并且提供一个全局的访问点. 适用场景:1.应用中某个实例对象需要频繁的被访问. 2.应用中每次启动只会存在一个实例. 优点:内存中只有一个实例,减少了内 ...

  7. 基本设计模式:单例模式和工厂模式代码实现

    单例模式 单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点.通常我们可以让一个全局变量使得一个对象被访问,但它不能阻止你实例化多个对象.一个最好的办法是,让类自身负责保存它的唯一实例.这个 ...

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

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

  9. iOS-事件响应链、单例模式、工厂模式、观察者模式

    欢迎关注我的iOS学习总结--每天学一点iOS:https://github.com/practiceqian/one-day-one-iOS-summary 一.iOS中事件传递和相应机制 iOS中 ...

  10. 一口气讲完设计模式(单例模式、工厂模式、原型模式、建造者模式、适配器、桥梁模式)

    设计模式 使用设计模式,可以让我们的代码具有更好的可读性.可扩展性.可读性.重用性.符合高内聚低耦合的特点.作为程序员,是我们经常听到的概念,也是我们程序员必须深入学习,了解的知识. 设计模式种类 该 ...

最新文章

  1. IDEA IntelliJ/ DataGrip 修改自动补全快捷键
  2. Elasticsearch环境搭建
  3. leetcode算法题--出界的路径数★
  4. 将这五个原则变成习惯,你的开发经验更值钱!
  5. boost::safe_numerics::interval相关的测试程序
  6. VIJOS 1052贾老二算算术 (高斯消元)
  7. (九)JS-WEB-API(DOM、BOM、事件、Ajax、存储)【每个工程师必须熟练掌握的技能】
  8. oracle 总账 gl,oracle EBS R12 总帐设置手册 BR100GL.pdf
  9. java学习(72):GUL流式布局管理器
  10. hive 操作(三)——hive 的数据模型
  11. linux系统在物流公司的z作用,【项目案例】基于RFID的智能物流仓储系统
  12. 汇编学习--7.13--转移指令
  13. 2019-02-26-GCN介绍
  14. Visual Leak Detector(vld)无法显示内存泄露文件名称与行号
  15. 如何在屏幕实时显示键盘操作(独家分享)
  16. ubuntu给手机刷机安卓8.0 ROOT+Xposed+JustTrustMe+Kali NetHunter
  17. A component is changing an uncontrolled input to be controlled. This is likely caused by the value
  18. android 扇形菜单动画,ArcMenu,仿path中带动画效果的扇形菜单
  19. VC下自制一个MusicPlayer:调用activemovie控件
  20. QQ小程序支付 QQ钱包支付 微信支付

热门文章

  1. asp不能做到的是什么
  2. 定义枚举类型时指定其使用的大小 (C++,C#)
  3. HTML(Hepertext Markup Language 超文本标记语言)
  4. 【经验】聊自己非计算机专业做程序员的经验
  5. NLP硬核入门-条件随机场CRF
  6. 哈工大SCIR Lab | EMNLP 2019 结合单词级别意图识别的stack-propagation框架进行口语理解...
  7. [NAACL18]What's Going On in Neural Constituency Parsers? An Analysis(神经成分句法分析器的一些分析)...
  8. 《MYSQL必知必会》—10~13.创建计算字段、使用数据处理函数、使用聚集函数汇总数据,使用GROUP BY与HAVING分组数据及过滤
  9. 为什么要使用 JavaScript
  10. 5.5 tensorflow2实现多项式回归与神经网络、未来一个月购买量预测——python实战