zoukankan      html  css  js  c++  java
  • 设计模式(十):享元模式

    优点:

      减少了系统中对象的数量,避免了大量细粒度对象给内存带来的压力,实现对细粒度对象的复用。

    缺点:

      此模式需要维护一个记录了系统已有的所有享元对象的列表,本身就需要耗费资源。此外此模式需要将一些状态外部化,也使得系统及逻辑更加复杂。

    适用范围:

      一个系统中有大量的对象,同时这些对象耗费大量的内存,这些对象内部状态可提取分组,外部状态可外部化。

    客户端: 

      WebSiteFactory f = new WebSiteFactory();  //生产的工厂

      WebSite wx = f.getWebSiteCategory("博客");
      wx.belongToUser(new User("小菜"));

      //专属网站
      WebSite my = f.getWebSiteCategory("专属"); //"专属"是区分标识
      my.belongToUser(new User("书生"));

      System.out.println("网站分类总数:"+f.getWebSiteCategoryCount());

    一句话概括:

      针对不同客户的同种类型的网站的需求,使用同一套核心代码,避免代码复制。

    /**
      * WebSite (接口,belongToUser(User user)方法)
      * ConcreteWebSite(共享实例)  UnShareConcreteWebSite(不共享实例)
      *
      * WebSiteFactory(生产工厂,包括网站列表、分类创建方法、已创建分类个数等方法) -- 创建和管理所有人的“网站”对象
      *
      * User (用于创建网站归属人)
      *
      */
  • 相关阅读:
    [SUCTF 2019]Pythonginx
    Buuctf-RSA1
    [网鼎杯 2020 朱雀组]phpweb
    [BJDCTF2020]ZJCTF,不过如此
    CTFHub-信息泄露
    vaex读取和处理大型文件的方法
    "生猪数据统计分析系统"----帮助文档
    法治理论1
    很短暂,很喜欢,很遗憾
    「CF1513E Cost Equilibrium」
  • 原文地址:https://www.cnblogs.com/shushengyou/p/10237277.html
Copyright © 2011-2022 走看看