Matlab享元模式
程序员文章站
2022-07-02 17:58:31
享元模式(Flyweight)通过共享技术实现相同或相似对象的重用,可以减少创建对象的数量,以减少内存占用和提高性能。Java String的常量池,python logging,线程池,数据库连接池都用到了享元模式。享元模式与单例模式类似,都具有共享变量的特征。本文通过使用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');
上一篇: Java线程池原理解读
下一篇: 秒杀系统Web层设计的实现方法
推荐阅读
-
vivo Z6今日正式开售:下单立减100元享12期免息 赠599元耳机
-
红米Redmi K20 Pro尊享版发布;升级骁龙855 Plus、12+512G限时2999元
-
京东华为畅享9s直降300:6+64到手仅999元
-
红米K20 Pro尊享版满减200元:到手价2999
-
149元小米多口USB电源适配器图赏:可充笔记本/支持双模式工作
-
Java描述设计模式(18):享元模式
-
三星The SERIF电视发布:内置"环境屏"模式 售11999元
-
老用户专享价49元 魅族推PANDAER 17夏日系列壳膜套装
-
米粉福利!小米钱包广西/海南一卡通可享0元开卡
-
小米影像旗舰CC9 Pro全版本降价:尊享版售3199元