美文网首页PHP经验分享PHP开发
编程的设计模式之享元模式

编程的设计模式之享元模式

作者: phpworkerman | 来源:发表于2020-08-31 22:08 被阅读0次
介绍

享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能,属于结构型模式。

代码实例

现有编辑器接口,通过 phpstorm 和 notepad 类实现了写的功能,通过工厂类选择创建编辑器类,工厂里有数组可以存储已经实例化过的类,在外部调用时,如果数组中存在已经实例化的类就直接调用,不需要在创建了。享元模式分内部和外部,在该例子中,内部就是编辑器类的方法,外部是使用人,内部保持不变,外部保持变化,根据调用的使用人,去工厂创建的池中寻找已创建的类。

<?php
interface AdvancedIde
{
    public function write();
}

class Phpstorm implements AdvancedIde
{
    public $name;

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

    public function readJs()
    {
        echo $this->name . '用phpstorm 读js代码' . '<br>';
    }

    public function readPhp()
    {
        echo $this->name . '用phpstorm 读php代码' . '<br>';
    }

    public function write()
    {
        echo $this->name . '用phpstorm 写代码' . '<br>';
    }
}

class IdeFactory
{
    public $map = [];

    public function handle($name)
    {
        if(!in_array($name,$this->map)){
            $this->map[$name] = new Phpstorm($name);
            return $this->map[$name];
        }

        return $this->map[$name];
    }
}

class FlyweightPatternDemo
{
    public function output()
    {
        $userList = ['张三','李四','王五'];
        $ideFactory = new IdeFactory();
        foreach($userList as $key => $item){
            $ide = $ideFactory->handle($item);
            $ide->readPhp();
            $ide->readJs();
            $ide->write();
        }
    }
}

$demo = new FlyweightPatternDemo();
$demo->output();
总结

享元模式对于系统中存在大量相似对象的创建管理很有用,可以支持对象更细粒度的管理,该模式必须通过工厂模式类来控制。

相关文章

  • 好程序员Java培训​分享java设计模式之享元模式

    好程序员Java培训​分享java设计模式之享元模式,Java设计模式中的享元模式。享元模式有点类似于单例...

  • Java设计模式——享元模式

    Java设计模式之享元模式 这期跟大家聊的的设计模式是享元模式,该模式也是结构模式。 简介 利用共享的方式解决大量...

  • 编程的设计模式之享元模式

    介绍 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能,属于结构...

  • JavaScript享元模式与性能优化

    摘要 享元模式是用于性能优化的设计模式之一,在前端编程中有重要的应用,尤其是在大量渲染DOM的时候,使用享元模式及...

  • 享元模式

    Android进阶之设计模式 享元模式 定义: 使用共享对象有效地支持大量细粒度的对象. 享元模式是池技术的重要实...

  • 享元模式

    swift实战-享元模式 概论:通过共享已存在的对象,减少创建对象内存开销的设计模式被称作享元模式 享元模式Fly...

  • 二十一、享元模式

    1. 何为享元模式 定义:通过共享已存在的对象,减少创建对象内存开销的设计模式被称为享元模式。 享元模式和单例模式...

  • Java设计模式_享元模式

    点击链接跳转:设计模式——享元模式

  • 结构型模式:享元模式

    文章首发:结构型模式:享元模式 七大结构型模式之六:享元模式。 简介 姓名 :享元模式 英文名 :Flyweigh...

  • 好程序员Java培训精讲  java设计模式—享元模式

    好程序员Java培训精讲 java设计模式—享元模式 一、关于享元模式 享元模式有点类似于单例模式,都是只生成一个...

网友评论

    本文标题:编程的设计模式之享元模式

    本文链接:https://www.haomeiwen.com/subject/pygfsktx.html