zoukankan      html  css  js  c++  java
  • 享元模式

    当显示机枪兵状态时,绘制工厂会判断机枪兵实例是否已经存在了
    如果存在了就直接返回
    //如果把
    static private $flyweights;
    //改为
    private $flyweights;
    //对应的self::改成$this为什么不行呢???
    <?php
    
    //机枪兵享元
    class MarineFlyweight
    {
        public function __construct()
        {
            //第一次实例化时输出,来对比下,第二次使用时,还会不会再实例化一个
            echo "实例化了一次!";
        }
        //绘制机枪兵的图像动画,参数为状态,比如属于哪一个玩家
        public function drawMarine($state)
        {
            //绘制机枪兵
            echo "机枪兵享元!".$state;
        }
    
    }
    
    //享元工厂
    class FlyweightFactory
    {
        //享元数组,用于存放多个享元
        static private $flyweights;
        //获取享元的方法
        public function getFlyweight($name)
        {
            if (!isset(self::$flyweights[$name]))
            {
                $obj = $name."Flyweight";
                self::$flyweights[$name] = new $obj();
            }
            return self::$flyweights[$name];
        }
    }
    
    
    $flyweightFactory = new FlyweightFactory();//初始化享元工厂
    $marine = $flyweightFactory->getFlyweight("Marine");//绘制一个机枪兵
    $status = "我还有3滴血!";
    $marine->drawMarine($status);//机枪兵某一个状态显示
    
    $marine = $flyweightFactory->getFlyweight("Marine");//绘制一个机枪兵
    $status = "我还有2滴血!";
    $marine->drawMarine($status);//机枪兵某一个状态显示
    
    ?>
  • 相关阅读:
    browserCaps与浏览器功能设置
    roleManager与角色管理授权
    identity与ASP.NET 模拟
    anonymousIdentification 与匿名访问
    authorization与URL授权
    v-loading使用(来自官网介绍)
    8-dentry占用过多内存的分析
    sourceTree使用
    5-Nginx map 使用详解
    11-Sampling Requests with NGINX Conditional Logging
  • 原文地址:https://www.cnblogs.com/jiufen/p/5000195.html
Copyright © 2011-2022 走看看