PHP工厂模式、单例模式与注册树模式实例详解
发布:smiling 来源: PHP粉丝网 添加日期:2021-11-24 20:20:23 浏览: 评论:0
这篇文章主要介绍了PHP工厂模式、单例模式与注册树模式,结合实例形式工厂模式、单例模式与注册树模式的基本概念、原理、实现方法及使用技巧,需要的朋友可以参考下。
本文实例讲述了PHP工厂模式、单例模式与注册树模式,分享给大家供大家参考,具体如下:
三种基本设计模式
1、工厂模式:工厂方法或者类生成对象,而不是在代码中直接new
2、单例模式:使某个类的对象仅允许创建一个
3、注册模式:全局共享和交换对象
工厂模式:
- <?php
- namespace IMooc;
- class Factory
- {
- static function createDatabase()
- {
- $db = new Database();
- return $db;
- }
- }
- $db = IMooc\Factory::createDatabase();
工厂模式的好处是,避免Database这个类,在很多个php文件都进行new操作,如果Database这个类发生了一些变更(修改了名字或者参数),那这时候如果不工厂模就需要修改多出了,使用工厂模式,就只需要修改工厂方法即可。
单例模式:
- <?php
- namespace IMooc;
- class Database
- {
- protected $db;
- private function __construct()
- {
- }
- // 获取数据库操作实例
- static function getInstance()
- {
- if(self::$db){
- return self::$db;
- }else{
- self::$db = new self();
- return self::$db;
- }
- }
- }
- // 无论调用多少次,只会创建一个实例
- $db = IMooc\Database::getInstance();
- $db = IMooc\Database::getInstance();
- $db = IMooc\Database::getInstance();
- $db = IMooc\Database::getInstance();
注册树模式:
- <?php
- namespace IMooc;
- class Register
- {
- protected static $objects;
- static function set($alias, $object)
- {
- self::$objects[$alias] = $object;
- }
- static function get($name)
- {
- return self::$objects[$name];
- }
- static function _unset($alias)
- {
- unset(self::$objects[$alias]);
- }
- }
- $db = \IMooc\Register::get('db1');
Tags: PHP工厂模式 PHP单例模式
相关文章
- ·PHP中单例模式与工厂模式详解(2018-08-02)
- ·浅析php工厂模式(2021-04-30)
- ·PHP基于工厂模式实现的计算器实例(2021-06-12)
- ·PHP工厂模式的日常使用(2021-11-13)
- ·PHP设计模式之简单工厂和工厂模式实例分析(2021-11-14)
- ·PHP设计模式之抽象工厂模式实例分析(2021-11-14)
- ·php单例模式笔记(2014-10-22)
- ·PHP单例模式实例浅析(2015-04-11)
- ·PHP设计模式-单例模式学习笔记(2015-12-10)
- ·PHP中数据库单例模式的实现代码分享(2021-04-07)
- ·php实现singleton()单例模式实例(2021-04-24)
- ·浅析php单例模式(2021-04-30)
- ·php单例模式示例分享(2021-05-13)
- ·php设计模式之单例模式实例分析(2021-05-14)
- ·PHP单例模式详细介绍(2021-06-06)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)