• 亨元模式


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

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

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

    亨元模式的核心在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。

  • 相关阅读:
    android gradle 多渠道打包
    Gradle Plugin User Guide 中文版
    最好的JAVA IDE IntelliJ IDEA使用简介(一)—之界面元素
    ANDROID 中UID与PID的作用与区别
    HTTP Header 详解
    HTTP协议详解
    Volatile总结
    Condition-线程通信更高效的方式
    JAVA基础知识点(转载的)
    CountDownLatch和CyclicBarrier的区别
  • 原文地址:https://www.cnblogs.com/blogofjzq/p/9474827.html
Copyright © 2020-2023  润新知