<?php
// 单例模式(三私一公)
class Site{
protected static $_instance;
protected function __construct(){
return self::$_instance;
}
protected function __clone(){
}
public static function getSingleton(){
if(! (self::$_instance instanceof self)){
self::$_instance = new self();
}
return self::$_instance;
}
}
// 工厂模式
class Factory{
public static function create($className){
return $className::getSingleton();
}
}
// 注册树模式
class Container{
protected static $object = [];
public static function set($alias, $obj){
self::$object[$alias] = $obj;
}
public static function get($alias){
return self::$object[$alias];
}
public static function _unset($alias){
unset(self::$object[$alias]);
}
Container::set('site', Factory::create('Site'));// 把单一对象实例挂到注册树上
$site = Container::get('site');// 从注册树中获取对象
PHP-三大设计模式--单例&工厂&注册树
TOC
Recent Posts
Tags
- 7z 1
- apache 4
- axios 1
- benchmark 1
- binlog 1
- c 1
- canvas 1
- centos 3
- channel 1
- crontab 1
- css 2
- databse 1
- docker 4
- fail2ban 1
- frp 1
- gin 1
- github 1
- go 26
- goaccess 1
- goroutine 1
- http 1
- https 1
- jetbrains 1
- jquery 1
- js 2
- linux 21
- mermaid 1
- mysql 11
- nginx 3
- node 1
- php 43
- prisma 1
- react 8
- rsync 1
- screen 1
- server 1
- smb 1
- ssh 2
- tarojs 1
- tcp/ip 1
- token 1
- ubuntu 1
- ufw 1
- unit-test 1
- ventoy 1
- vmware 2
- vscode 1
- vue 12
- yum 1
- 域名 3
- 安全 2
- 微信 3
- 算法 3