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);
        }
    }
  • 相关阅读:
    hdu6162 Ch’s gift
    hdu 6166 Senior Pan
    bzoj2818 Gcd
    hdu6127 Hard challenge
    splay伸展树模板
    2016-2017 National Taiwan University World Final Team Selection Contest J
    2016-2017 National Taiwan University World Final Team Selection Contest C
    使用powershell管理域用户
    EGL Driver message (Critical) eglInitialize: No available renderers.
    Python实现telnet命令测试防火墙
  • 原文地址:https://www.cnblogs.com/heben/p/5784557.html
Copyright © 2011-2022 走看看