php几种设计模式
2021-03-01 08:26
标签:require dog ali 单例 auto 类实例化 include protected prot 对象被频繁创建和销毁,比如有一个config类,主要存储项目配置信息,如果这个类实例化多次,在代码对配置进行修改;如何知道哪个配置类中进行了修改了,使用单例模式可以避免这个情况。对于所有的改变都是基于这个类。而不会出现实例化多个类; 创建型-简单工厂模式 php几种设计模式 标签:require dog ali 单例 auto 类实例化 include protected prot 原文地址:https://www.cnblogs.com/tanbinghao/p/14430392.html
class SingletonOne
{
private static $singletonOne = null;
public function ok()
{
echo ‘ok‘;
}
public static function getInstance(){
if (self::$singletonOne == null){
self::$singletonOne = new self();
}
return self::$singletonOne;
}
}
SingletonOne::getInstance()->ok();
单例模式只实例化一次,但是面试有被问到,A通过单例模式连接数据库,然后B也通过单例模式连接数据库。他们之间只实例化了一次还是?深信服和明源云遇到过。。
spl_autoload_register(‘auto‘);
function auto($class)
{
require $class.‘.php‘;
}
$new = new Dog();
$new->create(‘米莉‘);
class Dog
{
public function create($str = ‘‘){
echo ‘创建一条叫‘.$str.‘狗‘;
}
}
class Car
{
public function create($str = ‘‘){
echo ‘制造一辆叫‘.$str.‘车‘;
}
}
`spl_autoload_register队列加载,__autoload只加载一次,上次明源云有问到`
include ‘Car.php‘;
class Register
{
protected static $obj = [];
const LOGGER = ‘logger‘;
/**
* 挂载对象到全局树
* @param $alias
* @param $obj
*/
public static function set($alias, $obj)
{
self::$obj[$alias] = $obj;
}
/**
* 获取注册树对象
* @param string $name
* @return mixed
*/
public static function get($name = ‘‘)
{
return self::$obj[$name];
}
/**
* 销毁
* @param $name
*/
function __unset($name)
{
unset(self::$obj[$name]);
}
}
Register::set(Register::LOGGER,new Car());
$dog = Register::get(Register::LOGGER);
print_r($dog->create(‘a‘));
```
`应用中经常使用的对象创建一个中央存储器来存放这些对象`
下一篇:JS对象添加属性