zoukankan      html  css  js  c++  java
  • 设计模式 之 享元模式

    和String达到一样的目的,节省空间

    package com.test.pattern.flyweight;
    
    import java.util.Hashtable;
    
    abstract class Flyweight {
        public abstract void operation();
    }
    
    class ConcreteFlyweight extends Flyweight {
        
        private String str;
        public ConcreteFlyweight(String str) {
            this.str=str;
        }
        @Override
        public void operation() {
            System.out.println("Concrete---Flyweight: "+str);
        }
    }
    
    //再定义一个工厂方法类
    class FlyweightFactory {
        private Hashtable flyweights = new Hashtable();
        public Flyweight getFlyweight(Object obj) {
            Flyweight flyweight = (Flyweight)flyweights.get(obj);
            if(flyweight == null) {
                flyweight = new ConcreteFlyweight((String) obj);
                flyweights.put(obj, flyweight);
            }
            return flyweight;
        }
        public int getFlyweightSize() {
            return flyweights.size();
        }
    }
    public class FlyweightTest {
        FlyweightFactory factory = new FlyweightFactory();
        Flyweight fly1,fly2,fly3,fly4,fly5;
        public static void main(String[] args) {
            System.out.println("The Flyweight Pattern");
            FlyweightTest test = new FlyweightTest();
            test.showFlyweight();
        }
        public FlyweightTest() {
            fly1 = factory.getFlyweight("Google");
            fly2 = factory.getFlyweight("Qutr");
            fly3 = factory.getFlyweight("Google");
            fly4 = factory.getFlyweight("Google");
            fly5 = factory.getFlyweight("Google");
        }
        public void showFlyweight() {
            fly1.operation();
            fly2.operation();
            fly3.operation();
            fly4.operation();
            fly5.operation();
            int objSize = factory.getFlyweightSize();
            System.out.println("objSize = " + objSize);
        }
    }
  • 相关阅读:
    ThreadLocal全面解析,一篇带你入门
    StringTable字符串常量池的垃圾回收跟踪案例
    air镶边引7yue
    性能优化与团队效率
    air 错误信息一览
    AS3 使用unloadAndStop()卸载加载的swf以及里面的声音
    flash/flex/as3应用程序加载as2、as1版本的swf遇到的问题
    查看swc的代码
    chart 属性
    flex动态控制 effect
  • 原文地址:https://www.cnblogs.com/heben/p/5784557.html
Copyright © 2011-2022 走看看