zoukankan      html  css  js  c++  java
  • 享元模式(Flyweight Pattern)

    标签 : 设计模式


    模式简介
      享元模式是一种结构型模式
      当有大量重复对象时,通过共享对象,来达到减少系统运行时对象的总数的目的。
      避免对象过多导致内存溢出。提升效率。
      享元模式以共享的方式高效地支持大量的细粒度对象
      需要有一个工厂来控制对象生成。

    核心实现
      在对象工厂中放一个HashMap,在HashMap中能查找到该对象就直接返回,查找不到才new一个新的,并放在HashMap里面。

    例子
    (1)数据库中的数据库连接池。
    (2)多线程中的线程池。
    (3)java中的String存放在常量池。

    UML类结构图

    角色
    (1)抽象享元(Flyweight)角色:给出一个抽象接口,以规定出所有具体享元角色需要实现的方法。

    (2)具体享元(ConcreteFlyweight)角色:实现抽象享元角色所规定出的接口。如果有内蕴状态的话,必须负责为内蕴状态提供存储空间。

    (3)享元工厂(FlyweightFactory)角色:本角色负责创建和管理享元角色。本角色必须保证享元对象可以被系统适当地共享。当一个客户端对象调用一个享元对象的时候,享元工厂角色会检查系统中是否已经有一个符合要求的享元对象。如果已经有了,享元工厂角色就应当提供这个已有的享元对象;如果系统中没有一个适当的享元对象的话,享元工厂角色就应当创建一个合适的享元对象。

    享元模式和原型模式的区别?
    (1)原型是创建型模式,享元是结构型模式;
    (2)原型是创建过程复杂,直接内存复制。享元是需要的对象太多,通过复用来减少内存消耗。

    除了单纯享元模式,还有复合享元模式。

  • 相关阅读:
    结构体
    out传值
    函数
    数组
    计算公式
    MYSQLinsert速度过慢
    Centos6.4 本地yum源配置
    JProfiler解决Java服务器的性能跟踪
    Hessian Servlet和Hessian Spring的简单应用
    Jetty实战之 安装 运行 部署
  • 原文地址:https://www.cnblogs.com/banyu/p/6680943.html
Copyright © 2011-2022 走看看