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

    享元模式(Flyweight)通过共享技术实现相同或相似对象的重用,可以减少创建对象的数量,以减少内存占用和提高性能。Java String的常量池,python logging,线程池,数据库连接池都用到了享元模式。享元模式与单例模式类似,都具有共享变量的特征。本文通过使用matlab语言对享元模式进行实现。

     IFlyweight.m

    classdef IFlyweight < handle
        methods(Abstract)
            print(~);
        end
    end

    Flyweight.m

    classdef Flyweight < IFlyweight
        properties
            color
        end   
        methods
            function obj = Flyweight(color)
                obj.color =  color;
            end
            function print(obj)
                disp("color:"+obj.color)
            end
        end
    end
    

    FlyweightFactory.m

    classdef FlyweightFactory < handle    
        methods(Static)
            function res = getFlyweightMap()
                persistent flyweightMap;
                if isempty(flyweightMap) || ~isvalid(flyweightMap)
                    flyweightMap = containers.Map();
                end
                res = flyweightMap;
            end
            function obj = getFlyweight(color)
                flyweightMap = FlyweightFactory.getFlyweightMap();
                if(~flyweightMap.isKey(color))
                    flyweightMap(color) = Flyweight(color);
                end
                obj = flyweightMap(color);
            end
            function size = getFlyweightMapSize()
                flyweightMap = FlyweightFactory.getFlyweightMap();
                size = flyweightMap.length();
            end
        end
    end

    测试代码

    fw1 = FlyweightFactory.getFlyweight('Red');
    fw2 = FlyweightFactory.getFlyweight('Blue');
    fw3 = FlyweightFactory.getFlyweight('Red');
    fw1.print();
    fw2.print();
    fw3.print();
    disp(FlyweightFactory.getFlyweightMapSize());
    clear('FlyweightFactory');
  • 相关阅读:
    2015 多校联赛 ——HDU5389(dp)
    spring MVC配置详解
    面试题整理11
    面试题整理09
    Spring和SpringMVC的区别
    SpringMVC01
    js中typeof与instanceof用法小记
    Java 可变参数
    log4j文件的配置
    Hibernate 分组查询 子查询 原生SQL
  • 原文地址:https://www.cnblogs.com/usaddew/p/10947139.html
Copyright © 2011-2022 走看看