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');
  • 相关阅读:
    docker 方式安装gitlab时,项目的clone地址及项目文件列表地址为机器名的问题解决办法
    CPU流水线
    Element中el-form嵌套el-table双击编辑提交检验
    java基础知识
    C#多线程下载
    mysql优化
    C++ 算法(一)
    前端vue 的面试总结 以及答案以及前端技术点面试
    C# 组合任务
    C# List去重DistinctBy扩展
  • 原文地址:https://www.cnblogs.com/usaddew/p/10947139.html
Copyright © 2011-2022 走看看