设计模式详解 PHP版
  • 设计模式简介&原则
  • 常见设计模式
    • 工厂模式(Factory)
      • 简单工厂模式(Simple Factory)
      • 工厂方法模式(Factory Method)
      • 抽象工厂模式(Abstract Factory)
      • 三种工厂模式对比
    • 单例模式(Singleton)
      • 场景*memcache操作类
    • 注册树模式
    • 适配器模式(Adapter)
    • 策略模式(Strategy)
    • 数据对象映射模式
    • 观察者模式(observer)
    • 原型模式(Prototype)
    • 装饰器模式(Decorator)
    • 迭代器模式 (Iteration)
    • 桥接模式(Bridge)
    • 建造者模式(Builder)
    • 命令行模式(Command)
    • 组合模式(Composite)
    • 外观模式(Facade)
    • 享元模式(Flyweight)
    • 解释器模式(Interpreter)
    • 中介者模式(Mediator)
    • 备忘录模式(Memento)
    • 代理模式(Proxy)
    • 责任链模式(Responsibility Chain)
    • 状态模式(State)
    • 模板方法模式(Template Method)
    • 访问者模式(Visitor)
  • 资料
Powered by GitBook
On this page

Was this helpful?

  1. 常见设计模式

享元模式(Flyweight)

模式架构简单代码实现示例:

<?php
abstract class Resources{
    public $resource=null;
    abstract public function operate();
}
class unShareFlyWeight extends Resources{
    public function __construct($resource_str) {
        $this->resource = $resource_str;
    }
    public function operate(){
        echo $this->resource."<br>";
    }
}
class shareFlyWeight extends Resources{
    private $resources = array();
    public function get_resource($resource_str){
        if(isset($this->resources[$resource_str])) {
            return $this->resources[$resource_str];
        }else {
            return $this->resources[$resource_str] = $resource_str;
        }
    }
    public function operate(){
        foreach ($this->resources as $key => $resources) {
            echo $key.":".$resources."<br>";
        }
    }
}

// client
$flyweight = new shareFlyWeight();
$flyweight->get_resource('a');
$flyweight->operate();
$flyweight->get_resource('b');
$flyweight->operate();
$flyweight->get_resource('c');
$flyweight->operate();
// 不共享的对象,单独调用
$uflyweight = new unShareFlyWeight('A');
$uflyweight->operate();
$uflyweight = new unShareFlyWeight('B');
$uflyweight->operate();
Previous外观模式(Facade)Next解释器模式(Interpreter)

Last updated 6 years ago

Was this helpful?