zoukankan      html  css  js  c++  java
  • 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能够帮助读者。

  • 相关阅读:
    找出一个序列中第k大的元素 [快速选择问题]
    选择排序算法分析
    冒泡排序算法分析
    mysql的安装和配置
    Redis 简明教程
    flink-杂记
    redis-list
    bean创建过程
    镜像
    docker-命令
  • 原文地址:https://www.cnblogs.com/zhuxiansheng/p/8086507.html
Copyright © 2011-2022 走看看