• java 之 享元模式(大话设计模式)


    笔者很少用到享元模式,在笔者看来,享元模式解决内存问题用的应该会比较多,java中我们常用的String就是利用享元模式的思想来解决内存问题的

    先看下类图

    大话设计模式-类图

    在看下笔者的demo

    /**
     * 网站接口
     */
    public interface IWeb {
    
        public void sayMyself();
    }
    /**
     * 网站实现类
     */
    public class CurrentWeb implements IWeb{
    
        private String name;
    
        public CurrentWeb(String name) {
            super();
            this.name = name;
        }
    
        @Override
        public void sayMyself() {
            System.out.println(name);
        }
    }
    /**
     * 网站工厂
     */
    public class WebFactory {
    
        private Map<String, IWeb> webMap = new HashMap<>();
    
        public IWeb getWeb(String key) {
            if (!webMap.containsKey(key)) {
                webMap.put(key, new CurrentWeb(key));
            }
            return webMap.get(key);
        }
    
        public int getWebCount() {
            return webMap.size();
        }
    }
    /**
     * 客户端
     */
    public class Test {
    
        public static void main(String[] args) {
            WebFactory factory = new WebFactory();
            IWeb web = factory.getWeb("博客园");
            web.sayMyself();
            IWeb web1 = factory.getWeb("博客园");
            web1.sayMyself();
            IWeb web2 = factory.getWeb("空间");
            web2.sayMyself();
    
            System.out.println(web == web1);
    
            System.out.println(factory.getWebCount());
        }
    }

    输出结果为

    博客园
    博客园
    空间
    true
    2

    享元模式笔者使用的比较少,可能理解的不够深入。希望demo能够帮助读者。

  • 相关阅读:
    MySql优化-你的SQL命中索引了吗
    php根据两点经纬度算距离
    二维数组排序
    php 求对数
    socket,websocket,socketio之间的关系
    PHP获取两个时间戳间的所有日期
    通过动画理解Raft公式算法
    Fabric创建通道、组织加入通道
    查看进程线程的方法
    Fabric添加节点
  • 原文地址:https://www.cnblogs.com/zhuxiansheng/p/8086507.html
Copyright © 2020-2023  润新知