zoukankan      html  css  js  c++  java
  • 设计模式——共享模式

    共享模式_共享对象,避免内存浪费(避免重复创建相同的对象)

    /**
     * 需要被共享的对象
     * @author maikec
     * @date 2019/5/17
     */
    public class Flyweight {
        private String name;
        public Flyweight(String name){
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    }
    
    /**
     * @author maikec
     * @date 2019/5/17
     */
    public class FlyweightFactory {
        private static FlyweightFactory ourInstance = new FlyweightFactory();
        @Getter
        private final Map<String, Flyweight> pool = Collections.synchronizedMap( new HashMap<>(  ) );
    
        public static FlyweightFactory getInstance() {
            return ourInstance;
        }
    
        private FlyweightFactory() {
        }
    
        public Flyweight getFlyweight(String flyweightName){
            if (pool.containsKey( flyweightName )){
                return pool.get( flyweightName );
            }else{
                Flyweight flyweight = new Flyweight( flyweightName );
                pool.putIfAbsent( flyweightName,flyweight );
                return flyweight;
            }
        }
    }
    
    /**
     * @author maikec
     * @date 2019/5/17
     */
    public class FlyweightDemo {
        public static void main(String[] args) {
            FlyweightFactory instance = FlyweightFactory.getInstance();
            System.out.println( instance.getFlyweight( "Flyweight" ).getName() );
            System.out.println( instance.getFlyweight( "Flyweight" ).getName() );
    
            System.out.println( instance.getFlyweight( "Flyweight1" ).getName() );
    
            // 需要配置虚拟机 -ea 参数启用assert功能
            assert 2==instance.getPool().size();
        }
    }

    附录

    github.com/maikec/patt… 个人GitHub设计模式案例

    声明

    引用该文档请注明出处

  • 相关阅读:
    quick-cocos2d-x + Lua 开发
    设置 Quick-Cocos2d-x 在 Windows 下的编译环境
    luaIDE选择
    接管radiobutton onclick 事件
    AlphaControls的使用方法
    Delphi程序调用C#.Net编译的DLL并打开窗体(详解)
    delphi 正则表达式
    Windows server 2003 伪静态配置方法
    windows 2003 iis php
    Linux Shell系列教程之(十一)Shell while循环
  • 原文地址:https://www.cnblogs.com/imaikce/p/10882244.html
Copyright © 2011-2022 走看看