扫码关注官方订阅号
84669人学习
65727人学习
82984人学习
467778人学习
498837人学习
471966人学习
256484人学习
152542人学习
224170人学习
139536人学习
81804人学习
85022人学习
11944人学习
20001人学习
60816人学习
5487人学习
15007人学习
2150人学习
6980人学习
194925人学习
359900人学习
1142人学习
19058人学习
3206人学习
180550人学习
48569人学习
17603人学习
40936人学习
1049人学习
750人学习
32909人学习
PHP的五大设计模式
单例模式
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例
单例模式是一种常见的设计模式,在计算机系统中,线程池、缓存、日志对象、对话框、打印机、数据库操作、显卡的驱动程序常被设计成单例。
单例模式分3中:懒汉式单例,饿汉式单例,登记式单例
单例模式有以下3个特点:
只能有一个实例
必须自行创建这个实例
必须给其他对象提供这个实例
PHP使用单例模式的主要应用场合就是应用程序与数据库打交道的场景,在一个应用中会存在大量的数据库操作,针对数据库句柄连接数据库的行为,使用单例模式可以避免大量的new操作。每一个的new操作都会消耗系统和内存的资源。
<?php class Single{ //声明一个私有的实例变量 private $name; //声明一个私有构造方法,为了防止外部代码使用new来创建对象 private function __construct(){ } //声明一个静态变量(保存在类中唯一的一个实例) static public $instance; //声明一个静态方法,用于检测是否有实例对象 static public function getinstance(){ if(!self::$instance)self::$instance = new self(); return self::$instance; } public function setname($n){ $this->name = $n; } public function getname(){ return $this->name; } } $oa = Single::getinstance(); $ob = Single::getinstance(); $oa->setname('hello world'); $ob->setname('good morning'); echo $oa->getname();//good morning echo $ob->getname();//good morning ?>
点击 "运行实例" 按钮查看在线实例
工厂模式
工厂模式是我们最常用的实例化对象模式,使用工厂方法代替new操作的一种模式。
使用工厂模式的好处是,通过你想要更改所实例化的类名等,则只需要更改该工厂方法内容即可,不需逐一寻找代码中具体实例化的地方修改了。为系统结构提供灵活的动态扩展机制,减少了耦合。
<?php header('Content-Type:text/html;charset=utf-8'); /** *简单工厂模式(静态工厂方法模式) */ //Interface people 人类 interface people{ public function say(); } //Class man 继承people的***类 class man implements people{ public function say(){ echo '我是***'; } } //Class women 继承people的***类 class women implements people{ public function say(){ echo '我是***'; } } // Class SimpleFactoty 工厂类 class SimpleFactory{ //简单工厂里的静态方法,用于创建man对象 static public createMan(){ return new man(); } //简单工厂里的静态方法,用于创建woman对象 static public createWomen(){ return new woman(); } } $man = SimpleFactory::createMan(); $man->say(); $woman = SimpleFactory::createWomen(); $woman->say(); ?>
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
精品班
技术支持
技术咨询
学习群
会员优惠
返回顶部