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

    1. 概念

          享元模式(FlyWeight),运用共享技术有效的支持大量细粒度的对象 

    2. 案例 

    /**********************************************************************
     * <pre>
     * FILE : Demo01.java
     * CLASS : Demo01
     *
     * AUTHOR : Liaokailin
     *
     * FUNCTION : TODO
     *
     *
     *======================================================================
     * CHANGE HISTORY LOG
     *----------------------------------------------------------------------
     * MOD. NO.|   DATE   |   NAME  | REASON  | CHANGE REQ.
     *----------------------------------------------------------------------
     *             |2014-3-7|Liaokailin| Created |
     * DESCRIPTION:
     * </pre>
     ***********************************************************************/
    package org.demo.fylweight.demo01;
    
    import java.util.HashMap;
    import java.util.Map;
    
    
    interface Flyweight{
        void action(int arg) ;
    }
    
    
    class FlyweightImpl implements Flyweight{
        @Override
        public void action(int arg) {
            System.out.println("the value of param : " + arg);
        }
    }
    
    @SuppressWarnings("unchecked")
    class FlyweightFactory{
        @SuppressWarnings("rawtypes")
        private static Map flyweights = new HashMap() ;
        public FlyweightFactory(String arg){
            flyweights.put(arg, new FlyweightImpl()) ;
        }
        
        public static Flyweight getFlyweight(String key){
            if(flyweights.get(key)==null){
                flyweights.put(key, new FlyweightImpl()) ;
            }
            return (Flyweight) flyweights.get(key) ;
        }
        
        public static int getSize(){
            return flyweights.size() ;
        }
    }
    
    
    public class Demo01 {
           public static void main(String args[]){
               Flyweight fly1 = FlyweightFactory.getFlyweight("a");
               System.out.println(fly1);
               fly1.action(1) ;
               Flyweight fly2 = FlyweightFactory.getFlyweight("a");
               System.out.println(fly1 == fly2);
               
               Flyweight fly3 = FlyweightFactory.getFlyweight("b"); 
               fly3.action(2); 
               Flyweight fly4 = FlyweightFactory.getFlyweight("c"); 
               fly4.action(3); 
               Flyweight fly5 = FlyweightFactory.getFlyweight("d");
               fly5.action(4); 
               System.out.println(FlyweightFactory.getSize());
               
               
           }
    }

    结果:

     

    org.demo.fylweight.demo01.FlyweightImpl@530cf2
    the value of param : 1
    true
    the value of param : 2
    the value of param : 3
    the value of param : 4
    4
  • 相关阅读:
    解决:oracle+myBatis ResultMap 类型为 map 时返回结果中存在 timestamp 时使用 jackson 转 json 报错
    jackson @ResponseBody 处理日期类型的字段
    spring 中 InitializingBean 接口使用理解
    idea 中如何生成类图
    阿里云centOS 重启后 重启应用步骤
    日期类型 通过JOSN.stringify 后时间倒退8小时问题
    centOS7 下 安装mysql8.x
    Linux下卸载mysql8.x版本
    服务器上 MySql 8.0.16创建远程连接账号、获取初始密码、修改密码、重启命令等
    vue中读取excel中数据
  • 原文地址:https://www.cnblogs.com/liaokailin/p/3799995.html
Copyright © 2011-2022 走看看