浅谈PHP设计模式的享元模式

简介:

享元模式,属于结构型的设计模式。运用共享技术有效地支持大量细粒度的对象。

适用场景:

具有相同抽象但是细节不同的场景中。

优点:

把公共的部分分离为抽象,细节依赖于抽象,符合依赖倒转原则。

缺点:

增加复杂性。

代码:

//用户类
class User
{
    private $name;

    function __construct($name)
    {
        $this->name = $name;
    }

    public function getName()
    {
        return $this->name;
    }
}

//定义一个抽象的创建网站的抽象类
abstract class WebSite
{
    abstract public function use(User $user);
}

// 具体网站类
class ConcreteWebSite extends WebSite
{
    private $name = '';

    function __construct($name)
    {
        $this->name = $name;
    }

    public function use(User $user)
    {
        echo "{$user->getName()}使用我们开发的{$this->name}" . PHP_EOL;
    }
}

//网站工厂
class WebSiteFactory
{
    private $flyweights = [];

    public function getWebSiteGategory($key)
    {
        if (empty($this->flyweights[$key])) {
            $this->flyweights[$key] = new ConcreteWebSite($key);
        }
        return $this->flyweights[$key];
    }
}

$f = new WebSiteFactory();
$fx = $f->getWebSiteGategory('电商网站 ');
$fx->use(new User('客户A'));

$fy = $f->getWebSiteGategory('电商网站 ');
$fy->use(new User('客户B'));


$fl = $f->getWebSiteGategory('资讯网站 ');
$fl->use(new User('客户C'));

$fm = $f->getWebSiteGategory('资讯网站 ');
$fm->use(new User('客户D'));

原文链接:https://www.cnblogs.com/phpphp/p/17067999.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈PHP设计模式的享元模式 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • PHP实现数据四舍五入的方法小结【4种方法】

    PHP实现数据四舍五入的方法小结【4种方法】 对于一些需要精确计算的应用场景,我们需要对数据进行四舍五入的操作,本文总结了4种PHP实现数据四舍五入的方法。 方法一:round函数 round函数是PHP自带的函数,可以对一个数进行四舍五入。此函数接受两个参数,第一个参数是需要进行四舍五入的数值,第二个参数是小数点后保留的位数。如果第二个参数未传值,则默认返…

    PHP 2023年5月26日
    00
  • php基本函数汇总

    PHP基本函数汇总 PHP是一种服务器端脚本语言,它被广泛用于Web开发。PHP提供了许多常用的函数,让开发者能够快速、轻松地处理常见的任务。这篇文章将介绍一些PHP的基本函数,并提供一些示例来帮助您理解它们的用法。 字符串函数 strlen() strlen()函数用于获取字符串的长度,它返回一个字符串的字节数。以下是一个示例: $str = "…

    PHP 2023年5月26日
    00
  • 5.PHP的其他功能

    PHP作为一种流行的服务器端脚本语言,除了基本的变量、函数、条件、循环等语法外,还有一些其他的高级功能,可以帮助程序员更方便地开发和维护程序,本篇攻略将细致讲解PHP的其他功能。 1. 异常处理 异常处理是一种程序控制结构,用于在代码中发生错误时捕捉并处理异常。PHP中可以使用“try-catch”语句来实现异常处理,其语法结构如下: try { // 正常…

    PHP 2023年5月30日
    00
  • PHP实现的简单AES加密解密算法实例

    下面是对于“PHP实现的简单AES加密解密算法实例”的完整攻略,主要包括以下几个部分: 材料准备 算法实现 示例说明 1. 材料准备 在开始实现之前,需要确保已经安装好了 PHP 环境,并且可以使用 PHP 命令行工具进行脚本测试。 此外,我们还需要依赖一个 OpenSSL 扩展库,因此需要使用命令安装 OpenSSL 扩展库: $ sudo apt-get…

    PHP 2023年5月26日
    00
  • PHP实现字符串大小写转函数的功能实例

    下面是关于“PHP实现字符串大小写转函数的功能实例”的详细攻略: 1. 确定函数的名称 首先,我们需要为这个函数命名,通常情况下,我们采用以下的函数名称: function convertCase($str, $type) 其中 $str 参数为待转换的字符串,$type 参数为转换类型。 2. 编写函数 有了函数名称,我们就可以着手编写函数了。下面我们给出…

    PHP 2023年5月24日
    00
  • 原生js实现ajax请求和JSONP跨域请求操作示例

    下面我将详细讲解”原生js实现ajax请求和JSONP跨域请求操作示例”的完整攻略。 AJAX请求 简介 AJAX(Asynchronous JavaScript And XML),是一种无需重新加载整个页面的情况下与服务器交换数据并更新部分网页的技术。AJAX 主要由三个部分组成:XMLHttpRequest 对象、JavaScript 和 DOM。 实现…

    PHP 2023年5月27日
    00
  • php下检测字符串是否是utf8编码的代码

    要检测字符串是否是UTF-8编码,可以使用以下步骤: 步骤一:使用正则表达式检测字符串是否符合UTF-8格式 首先,可以使用PHP的正则表达式函数preg_match()检测字符串是否符合UTF-8编码。下面是一个例子: $string = "Hello, 世界!"; if (preg_match("//u", $st…

    PHP 2023年5月26日
    00
  • PHP输入输出流学习笔记

    下面我为您详细讲解“PHP输入输出流学习笔记”的完整攻略。 什么是PHP输入输出流 PHP输入输出流是指输入和输出的数据流,在PHP中可以使用标准输入输出(stdin和stdout)和标准错误(stderr)来进行输入输出。 标准输入输出 输出 在PHP中,可以使用echo和print函数来向标准输出流(stdout)输出数据。例如: echo "…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部