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

随心笔谈2年前发布 admin
188 0 0

文章摘要

本文介绍了PHP中的**享元模式(Flyweight Pattern)**及其实现。文章通过示例展示了如何利用一个工厂类(FlyweightFactory)管理共享实例(Flyweight对象),以提高代码效率。核心内容包括: 1. **定义了Flyweight接口**,并实现了通过状态继承类(ConcreteFlyweight)来操作对象。 2. **FlyweightFactory类**负责缓存不同状态的实例,避免重复创建。 3. **客户端代码**展示了如何通过工厂类获取实例并执行操作。 文章重点突出了**共享实例、状态保持、一次创建多次使用**的核心思想,体现了享元模式在减少对象创建次数和提升性能中的应用。

<?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();

© 版权声明

相关文章