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');
  • 相关阅读:
    获取汉字和字母的长度
    JavaScript 获取对象中第一个属性
    JS函数的length属性
    原型模式 -- JavaScript语言的灵魂
    建造者模式
    阻止form元素内的input标签回车提交表单
    工厂方法模式(安全的工厂方法)
    微信自研生产级paxos类库PhxPaxos实现原理介绍
    图解分布式一致性协议Paxos
    Paxos协议超级详细解释+简单实例
  • 原文地址:https://www.cnblogs.com/usaddew/p/10947139.html
Copyright © 2011-2022 走看看