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');
  • 相关阅读:
    WCF Server Console
    Restart IIS With Powershell
    RestartService (recursively)
    Copy Files
    Stopping and Starting Dependent Services
    多线程同步控制 ManualResetEvent AutoResetEvent MSDN
    DTD 简介
    Using Powershell to Copy Files to Remote Computers
    Starting and Stopping Services (IIS 6.0)
    java中的NAN和INFINITY
  • 原文地址:https://www.cnblogs.com/usaddew/p/10947139.html
Copyright © 2011-2022 走看看