php设计模式
总体来说设计模式分为三大类:
- 创建型模式---共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
- 结构型模式---共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
- 行为型模式---共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式
下面,简单介绍几种设计模式:
单例模式
- 单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。
- 优点:
一、实例控制:单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。
二、灵活性:因为类控制了实例化过程,所以类可以灵活更改实例化过程。 缺点
一、开销
虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。可以通过使用静态初始化解决此问题。
二、可能的开发混淆
使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。<?php //单例 class Log { //创建静态私有的变量保存该类对象 static private $instance; //参数 private $config; //防止直接创建对象 private function __construct($config){ $this->config = $config; echo "我已经被实例化了-"; } //防止克隆对象 private function __clone(){} public static function getInstance($config){ //判断$instance是否是Log的对象 //没有则创建则创建 if (!self::$instance instanceof self) { self::$instance = new self($config); } return self::$instance; } public function getName(){ echo $this->config; } } $db1 = Log::getInstance('实例化1'); $db1->getName(); echo "<br>"; $db2 = Log::getInstance('实例化2'); $db2->getName(); ?> 运行结果: 我已经被实例化了-实例化1 实例化2
相关推荐
heyboz 2020-10-21
lukezhong 2020-10-14
tangxiong0 2020-09-03
zhaowj00 2020-07-05
寻常白昼 2020-06-14
luvhl 2020-06-08
oXiaoChong 2020-06-03
chenlxhf 2020-05-06
是一道经常出现在前端面试时的问题。如果只是简单的了解new关键字是实例化构造函数获取对象,是万万不能够的。更深入的层级发生了什么呢?同时面试官想从这道题里面考察什么呢?下面胡哥为各位小伙伴一一来解密。
haohong 2020-04-08
JF0 2020-03-20
fanhuasijin 2020-03-01
横云断岭 2020-02-20
zhouyuqi 2020-01-20
kong000dao0 2020-01-11
年轻就要对味 2014-07-11
发条戏子 2019-12-27
王志龙 2019-12-26