php设计模式二之工厂模式、单例模式、注册树模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php设计模式二之工厂模式、单例模式、注册树模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1865字,纯文字阅读大概需要3分钟。
内容图文
![php设计模式二之工厂模式、单例模式、注册树模式](/upload/InfoBanner/zyjiaocheng/138/a69c4269da5d4358b5d3f7c148e23ff7.jpg)
一、工厂模式:工厂方法或类中生成对象,而不是在代码中直接 new
优点:将某个常用类,多个地方需要 new 时,使用工厂模式,方便类的扩展与维护
文件目录:Frame/Factory.php
<?php namespace Frame; use Frame\Database; use Frame\Register; class Factory { static function createDatabase() { //$db = new Database(); //正常实例化类 $db = Database::getInstance(); //获取单例模式的类 Register::set('db',$db); //将实例化后的类注册到全局注册树中 return $db; } } //外部调用得到$db对象 $db = Frame\Factory::createDatabase(); //获取全局注册树中的对象 $db = Frame\Register::get('db'); //卸载全局注册树中的对象 $db = Frame\Register::_unset('db'); ?>
二、单例模式:只允许在类的本身 new 实例化对象
优点:外部无法 new 该类,并且该对象在类本身创建一次,节约资源开销
文件目录:Frame/Database.php
<?php namespace Frame; class Database { protected $db; //单例模式,私有化__construct()方法,不允许外部实例化对象 private function __construct() { } //实例化本类 static function getInstance() { if(self::$db) { return self::$db; } else { self::$db = new self(); return self::$db; } } } //外部调用 $db = Frame\Database::getInstance(); ?>
三、注册树模式:将某个对象注册到全局注册树中,便于全局使用
存放目录:Frame/Register.php
<?php namespace Frame; class Register { protected $objects; /* * 将实例化后的类注册到全局注册树中 * $alias :对象别名 * $object:实例化后的对象 */ static function set($alias,$object) { self::$objects[$alias] = $object; } /* * 卸载实例化后的类 * $alias :对象别名 */ static function _unset($alias) { unset(self::$objects[$alias]); } /* * 获取实例化后的类对象 * $alias : 对象别名 */ static function get($alias) { return self::$objects[$alias]; } } ?>
相关推荐:
php设计模式一之命名空间、自动加载类、PSR-0编码规范
以上就是php设计模式二之工厂模式、单例模式、注册树模式 的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的php设计模式二之工厂模式、单例模式、注册树模式全部内容,希望文章能够帮你解决php设计模式二之工厂模式、单例模式、注册树模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。