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设计模式案例

    声明

    引用该文档请注明出处

  • 相关阅读:
    ubuntu安装后要做什么
    JavaScript错误处理
    jQuery 事件
    display的用法
    百度排名的原理
    什么是ajax?
    CSS文档流
    引用CSS的方法
    jQuery的安装方式
    禁止WPS2019开机自启动
  • 原文地址:https://www.cnblogs.com/imaikce/p/10882244.html
Copyright © 2011-2022 走看看