zoukankan      html  css  js  c++  java
  • 亨元模式

    亨元模式和单例模式相似,都是为了节省内存。

    对于一个可复用的对象,一百个需要用到的地方获得同一个对象比创建一百个新的对象更节省内存,这就是单例模式。

    亨元模式在单例的基础上进行了拓展,把状态分成可共享的内部状态和不可共享的外部状态。能共享内部状态的获取同一个对象。

    亨元模式的核心在Factory,它负责判断是创建新对象还是返回已有对象。

    代码如下:

    写一个亨元抽象类:

    public abstract class Flyweight {
        public String inner;
        public Flyweight(String inner)
        {
            this.inner=inner;
        }
        public abstract void operation(String out);
    }

    写实现:

    public class FlyweightImp extends Flyweight{
        public FlyweightImp(String inner) {
            super(inner);
        }
        public void operation(String out) {
            System.out.println("this is inner state:"+inner);
            System.out.println("this is out state:"+out);
        }
    }

    写工厂:

    public class FlyweightFactory {
        public static Map<String,Flyweight> FlyMap=new HashMap<String,Flyweight>();
        public static Flyweight getFly(String inner)
        {
            if(FlyMap.containsKey(inner))
            {
                return FlyMap.get(inner);
            }
            else
            {
                Flyweight f=new FlyweightImp(inner);
                FlyMap.put(inner, f);
                return f;
            }
        }
    }

    最后测试:

    public class test {
        public static void main(String[] args)
        {
            Flyweight fw=FlyweightFactory.getFly("a");
            fw.operation("out1");
            fw=FlyweightFactory.getFly("a");
            fw.operation("out2");
            fw=FlyweightFactory.getFly("b");
            fw.operation("out3");
            fw=FlyweightFactory.getFly("b");
            fw.operation("out4");
        }
    }

    在测试中,一共创建了两个Flyweight。

  • 相关阅读:
    pycharm中文乱码
    bootstrap-table分页
    sql将查询结果的某个字段赋值给另一个字段
    bootstrap tab选项卡
    cocos-js 精灵移动转圈
    配置环境变量路径有空格
    配置java环境遇到的问题及解决方案
    obj = obj || {} 分析这个代码的起到的作用
    sql server行转列
    sql server统计总成绩和排名
  • 原文地址:https://www.cnblogs.com/blogofjzq/p/9474827.html
Copyright © 2011-2022 走看看