zoukankan      html  css  js  c++  java
  • 享元模式

    模式介绍

    享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。

    模式优点

    1、大大减少对象的创建,降低系统的内存,使效率提高。

    模式缺点

    1、提高了系统的复杂度,需要分离出外部状态和内部状态,而且外部状态具有固有化的性质,不应该随着内部状态的变化而变化,否则会造成系统的混乱。

    使用场景

    1、系统有大量相似对象。
    2、需要缓冲池的场景。

    系统建模

    1、网站外包,网站的发布形式有多种且具有固有化的性质。

    系统实现

    /**
     * 网站抽象类
     */
    public abstract class WebSite {
        public abstract void use();
    }
    
    /**
     * 网站实例
     */
    public class ConcreteWebSit extends WebSite {
        private String webType = "";
    
        public ConcreteWebSit(String type){
            this.webType = type;
        }
    
        @Override
        public void use() {
            System.out.println("网站的样式是:" + webType);
        }
    }   
    
    /**
     * 网站工厂
     */
    public class WebSitFactory {
        private static HashMap<String, WebSite> pool = new HashMap<>();
    
        public static WebSite getWebSit(String webSitType){
            if (!pool.containsKey(webSitType)) {
                WebSite webSite = new ConcreteWebSit(webSitType);
                pool.put(webSitType, webSite);
                return webSite;
            } else {
                return pool.get(webSitType);
            }
        }
    }
    
    /**
     * 客户端
     */
    public class Client {
        public static void main(String args[]){
            String webType1 = "清洁版";
            String webType2 = "高清版";
            WebSite webSite1 = WebSitFactory.getWebSit(webType1);
            WebSite webSite2 = WebSitFactory.getWebSit(webType2);
            webSite1.use();
            webSite2.use();
        }
    }
    结果:
    网站的样式是:清洁版
    网站的样式是:高清版
    
  • 相关阅读:
    Tomcat容器,Servlet容器,Spring容器的包含关系
    数据库字段类型导致的前端JSON转换错误
    全局变量和局部变量
    数据库中的timestamp类型数据的存储
    layer的confirm
    网间互联协议
    局域网协议
    局域网络设备
    网络传输介质
    Docker常用命令
  • 原文地址:https://www.cnblogs.com/feiqiangsheng/p/12208788.html
Copyright © 2011-2022 走看看