php享元(轻量级)模式

结构型模式

 php享元(轻量级)模式
 就是缓存了创建型模式创建的对象,不知道为什么会归在结构型模式中,个人觉得创建型模式更合适,哈哈~
 其次,享元强调的缓存对象,外观模式强调的对外保持简单易用,是不是就大体构成了目前牛逼哄哄且满大
 的街【依赖注入容器】
 
 下面我们借助最简单的’工厂模式‘来实现享元模式,就是给工厂加了个缓存池
 

<?php
namespace flyweight;

/**
 * 动物接口
 */
interface AnimalInterface
{
  /**
   * 类型获取
   *
   * @return string
   */
  public function getType();
}
<?php
namespace flyweight;

/**
 * 实体鸡
 *
 */
class Chicken implements AnimalInterface
{
  /**
   * 类别
   * @var string
   */
  private $_type = '';

  /**
   * 构造函数
   */
  public function __construct()
  {

  }

  /**
   * 类型获取
   *
   * @return string
   */
  public function getType()
  {
    echo "这是只鸡~ \n";
  }
}
<?php
namespace flyweight;

/**
 * 实体鸡
 *
 */
class Pig implements AnimalInterface
{
  /**
   * 类别
   * @var string
   */
  private $_type = '';

  /**
   * 构造函数
   */
  public function __construct()
  {

  }

  /**
   * 类型获取
   * 
   * @return string
   */
  public function getType()
  {
    echo "这是只猪~ \n";
  }
}
<?php
namespace flyweight;

/**
 * 农场
 *
 * 生产动物
 */
class Farm
{
  /**
   * 对象缓存池
   * @var array
   */
  private $_farmMap = [];

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

  /**
   * 生产方法
   *
   * 生产农物
   *
   * @param  string $type 农场类型
   * @return mixed
   */
  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
/**
 * 结构型模式
 *
 * php享元(轻量级)模式
 * 就是缓存了创建型模式创建的对象,不知道为什么会归在结构型模式中,个人觉得创建型模式更合适,哈哈~
 * 其次,享元强调的缓存对象,外观模式强调的对外保持简单易用,是不是就大体构成了目前牛逼哄哄且满大
 * 的街【依赖注入容器】
 *
 * 下面我们借助最简单的’工厂模式‘来实现享元模式,就是给工厂加了个缓存池
 *
 *   
 * @example 运行 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();

 

 

 

 

 

已标记关键词 清除标记
课程简介: 历经半个多月的时间,Debug亲自撸的 “企业员工角色权限管理平台” 终于完成了。正如字面意思,本课程讲解的是一个真正意义上的、企业级的项目实战,主要介绍了企业级应用系统中后端应用权限的管理,其中主要涵盖了六大核心业务模块、十几张数据库表。 其中的核心业务模块主要包括用户模块、部门模块、岗位模块、角色模块、菜单模块和系统日志模块;与此同时,Debug还亲自撸了额外的附属模块,包括字典管理模块、商品分类模块以及考勤管理模块等等,主要是为了更好地巩固相应的技术栈以及企业应用系统业务模块的开发流程! 核心技术栈列表: 值得介绍的是,本课程在技术栈层面涵盖了前端和后端的大部分常用技术,包括Spring Boot、Spring MVC、Mybatis、Mybatis-Plus、Shiro(身份认证与资源授权跟会话等等)、Spring AOP、防止XSS攻击、防止SQL注入攻击、过滤器Filter、验证码Kaptcha、热部署插件Devtools、POI、Vue、LayUI、ElementUI、JQuery、HTML、Bootstrap、Freemarker、一键打包部署运行工具Wagon等等,如下图所示: 课程内容与收益: 总的来说,本课程是一门具有很强实践性质的“项目实战”课程,即“企业应用员工角色权限管理平台”,主要介绍了当前企业级应用系统中员工、部门、岗位、角色、权限、菜单以及其他实体模块的管理;其中,还重点讲解了如何基于Shiro的资源授权实现员工-角色-操作权限、员工-角色-数据权限的管理;在课程的最后,还介绍了如何实现一键打包上传部署运行项目等等。如下图所示为本权限管理平台的数据库设计图: 以下为项目整体的运行效果截图: 值得一提的是,在本课程中,Debug也向各位小伙伴介绍了如何在企业级应用系统业务模块的开发中,前端到后端再到数据库,最后再到服务器的上线部署运行等流程,如下图所示:
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页
实付 39.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值