专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

PHP 实现享元模式

相关角色:
1、抽象享元角色:
2、具体享元角色:
3、非享元角色:
4、享元工厂角色:

65_1.png

<?php
interface Flyweight
{
    public function show();
}

class ConcreteFlyweight implements Flyweight
{
    private $state;
    function __construct($state)
    {
        $this->state = $state;
    }

    function show()
    {
        return $this->state;
    }
}

class UnsharedConcreteFlyweight implements Flyweight
{
    private $state;
    function __construct($state)
    {
        $this->state = $state;
    }

    public function show()
    {
        return $this->state;
    }
}

class FlyweightFactory
{
    private $flyweights = [];
    function getFlyweight($state)
    {
        if(!isset($this->flyweights[$state])) {
            echo "create ". $state.PHP_EOL;
            $this->flyweights[$state] = new ConcreteFlyweight($state);
            $flyweight = $this->flyweights[$state];
        } else {
            $flyweight = $this->flyweights[$state];
            echo "get ".$state." from pool".PHP_EOL;
        }

        return $flyweight;
    }
}

$flyweightFactory = new FlyweightFactory();
$flyweightOne = $flyweightFactory->getFlyweight("state A");
echo $flyweightOne->show();
$flyweightOne = $flyweightFactory->getFlyweight("state A");
echo $flyweightOne->show();
$flyweightTwo = new UnsharedConcreteFlyweight("state B");
echo $flyweightTwo->show();
?>

五子棋游戏,棋子只有黑白两色,可共享,但是具体的落子位置不一样,不共享。

文章永久链接:https://tech.souyunku.com/45216

未经允许不得转载:搜云库技术团队 » PHP 实现享元模式

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们