首页 > 编程语言 >PHP享元(轻量级)模式

PHP享元(轻量级)模式

时间:2023-02-09 11:38:20浏览次数:37  
标签:享元 function php 缓存 PHP type public 轻量级


阅读目录

  • ​​项目应用目录​​
  • ​​动物接口​​
  • ​​实体鸡​​
  • ​​实体猪​​
  • ​​农场​​
  • ​​借助最简单的’工厂模式‘来实现享元模式​​

项目应用目录

  • 结构型模式 - php享元(轻量级)模式
  • 就是缓存了创建型模式创建的对象。
  • 其次,享元强调的缓存对象,外观模式强调的对外保持简单易用,是不是就大体构成了目前牛逼哄哄且满大街的【依赖注入容器】
  • 下面我们借助最简单的’工厂模式‘来实现享元模式,就是给工厂加了个缓存池。
目录: D:\flyweight


Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2021/9/16 10:19 181 AnimalInterface.php
-a---- 2021/9/16 10:19 389 Chicken.php
-a---- 2021/9/16 10:19 964 Farm.php
-a---- 2021/9/16 10:19 386 Pig.php
-a---- 2021/9/16 10:19 1083 test.php

动物接口

<?php
namespace flyweight;

# 动物接口
interface AnimalInterface
{
# 类型获取
public function getType();
}

实体鸡

<?php
namespace flyweight;

# 实体鸡
class Chicken implements AnimalInterface
{
private $_type = ''; # 类别

public function __construct() {} # 构造函数

# 类型获取
public function getType()
{
echo "这是只鸡~ \n";
}
}

实体猪

<?php
namespace flyweight;

# 实体猪
class Pig implements AnimalInterface
{
private $_type = ''; # 类别

public function __construct(){} 构造函数

# 类型获取
public function getType()
{
echo "这是只猪~ \n";
}
}

农场

<?php
namespace flyweight;

# 农场 - 生产动物
class Farm
{
private $_farmMap = []; # 对象缓存池

# 构造函数
public function __construct()
{
echo "-----------初始化了一个农场----------- \n\n";
}

# 生产方法 * 生产农物 * @param string $type 农场类型
public function produce($type='')
{
// 对象缓存池判断
if (key_exists($type, $this->_farmMap))
{
echo "来自缓存池-> ";
return $this->_farmMap[$type];// 返回缓存
}

switch ($type)
{
case 'chicken':
return $this->_farmMap[$type] = new Chicken();
break;

case 'pig':
return $this->_farmMap[$type] = new Pig();
break;

default:
echo "该农场不支持生产该农物~ \n";
break;
}

}

}

借助最简单的’工厂模式‘来实现享元模式

运行 php test.php

// 注册自加载
spl_autoload_register('autoload');

function autoload($class)
{
require dirname($_SERVER['SCRIPT_FILENAME']).'//..//'.str_replace('\\','/',$class).'.php';
}

/************************************* test *************************************/

use flyweight\Farm;

// 初始化一个工厂
$farm = new Farm();

// 成产一只鸡
$farm->produce('chicken')->getType();
// 再生产一只鸡
$farm->produce('chicken')->getType();
这是只鸡~
来自缓存池-> 这是只鸡~


标签:享元,function,php,缓存,PHP,type,public,轻量级
From: https://blog.51cto.com/u_13571520/6046446

相关文章

  • PHP外观模式
    阅读目录​​项目目录结构​​​​动物接口​​​​实体鸡工厂​​​​实体猪工厂​​​​外观类​​​​运行phptest.php​​项目目录结构结构型模式-php外观模式把系......
  • PHP strpos() 函数查找字符串在另一字符串中第一次出现的位置
    定义和用法strpos()函数查找字符串在另一字符串中第一次出现的位置。注释:strpos()函数对大小写敏感。注释:该函数是二进制安全的。if(strpos('2020Q4','Q')!==false){e......
  • PHP 判断几秒前,几分钟,几小时前最多判断6天前
    $time=strtotime("2021-02-1719:04:14");echoReckonTime($time);functionReckonTime($time){$NowTime=time();if($time>$NowTime){returnfalse;}$T......
  • php适配器模式
    阅读目录​​场景​​​​test.php​​​​AudioPlayer.php​​​​MediaInterface.php​​​​Adapter.php​​​​AdvanceMp4Player.php​​​​MediaAdvanceInterface.ph......
  • PHP里的日期加减方法
    //第一步,假设有一个时间$a='2012-04-2510:10:00';//第二步,获得这个日期的时间戳$a_time=strtotime($a);//第三步,获得加五个月后的时间戳$b_time=strtotime('+5......
  • 获取PHP版本,获取Redis版本,获取MongoDB版本输出已安装扩展
    <?phperror_reporting(E_ALL);ini_set('display_errors',1);echo'<h1style="text-align:center;">欢迎使用DNMP!</h1>';echo'<h2>版本信息-----willem</h2>';echo'<ul>......
  • PHP注册模式
    阅读目录PHP注册模式PHP注册模式注册模式解决全局共享和交换对象,将已创建好的对象,挂在全局可以使用的数组上,在需要使用的时候,直接从该数组上获取该类的实现即可......
  • brew 安装 nginx 配合PHP工作
    1.前言环境介绍:macbookprom12020本文记录使用brew安装nginx配合PHP工作2.安装PHP#查看有哪些PHP版本可以安装brewsearchphp#安装php7.2brewinstall......
  • 使用iis设置网站php版本为7.3
    内容:使用iis设置网站php版本为7.3这张图是多少人的噩梦 早期的宝塔版本没办法在线升级,php版本只能到7.1 默认就没有7.2以上版本 怎么办?可以在iis设置第一步: ......
  • 7、install_mysql_httpd_php_wordpress
    #!/bin/bash##********************************************************************#Author: zikang#QQ: [email protected]#Date: 2021-03-03......