PHP结构型模式之享元模式详解(js享元模式)新鲜出炉

随心笔谈9个月前发布 admin
200 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章介绍了**享元模式(Flyweight Pattern)**及其实现。文章首先定义了一个**享元接口**`Flyweight`,该接口包含一个操作方法`operation()`。接着,实现了一个`ConcreteFlyweight`类,该类继承自`Flyweight`接口,并使用一个私有属性`$state`来保持对象状态。`ConcreteFlyweight`类的`operation()`方法在实例化时会输出操作信息。 此外,文章还定义了一个**享元工厂类**`FlyweightFactory`。该类负责管理共享实例,通过一个内部数组`$flyweights`来存储不同状态的实例。当调用`getFlyweight()`方法时,如果对应状态的实例已经存在,则返回该实例;否则,创建新实例并存储在数组中。 文章最后展示了如何在客户端代码中使用`FlyweightFactory`。通过工厂类获取不同状态的实例,并调用这些实例的操作方法,实现了对象的共享使用,减少了对象的重复创建。

<?php
// 享元接口
interface Flyweight
{
public function operation();
}
// 具体享元类
class ConcreteFlyweight implements Flyweight
{
private $state;
public function __construct($state)
{
$this->state=$state;
}
public function operation()
{
echo “ConcreteFlyweight with state {$this->state} is operated.\n”;
}
}
// 享元工厂类
class FlyweightFactory
{
private $flyweights=[];
public function getFlyweight($state)
{
if (!isset($this->flyweights[$state])) {
$this->flyweights[$state]=new ConcreteFlyweight($state);
}
return $this->flyweights[$state];
}
}
// 客户端代码
$factory=new FlyweightFactory();
$flyweight1=$factory->getFlyweight(“state1”);
$flyweight1->operation();
$flyweight2=$factory->getFlyweight(“state2”);
$flyweight2->operation();
$flyweight3=$factory->getFlyweight(“state1”);
$flyweight3->operation();

© 版权声明

相关文章