`

4、享元设计模式

阅读更多

一、享元模式(Flyweight)

 

  1. Flyweight在拳击比赛中指最轻量级。
  2. 享元模式以共享的方式高效的支持大量的细粒度对象。
  3. 是一种结构模式,处理类和对象之间的组合,避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类)
  4. 享元模式是一个提高程序效率和性能的模式
  5. 会大大加快程序的运行速度,应用场合很多

 

  • 比如从一个数据库中读取一系列的字符串,这些字符串中有很多重复的,
  • 这时候就可以将重复的字符存储在Flyweight池中

 

  • 又比如说一个文本系统,每个字母定义一个对象,大小写在一块移动定义52个对象
  • 如果在一个1M的文本中有那么多的字母,如果每个字母都要定义一个对象的话,内存占有量就太大了
  • 如果每个字母都共享一个对象的话那就只用定义52个对象,
  • 用到的时候直接来拿就节省了很多资源

 

  1. 在JAVA语言中,String和Integer类型就是使用了享元模式。
  2. String对象是final类型,对象一旦创建就不可改变。
  3. 在JAVA中字符串常量都是存在常量池中的,JAVA会确保一个字符串常量在常量池中只有一个拷贝。
  4. String a="abc",其中"abc"就是一个字符串常量。
  5. Integer的缓存范围是-128到127

 

  1. 享元模式的重点在于分离变与不变。
  2. 把一个对象的状态分成内部状态和外部状态,内部状态是不变的,外部状态是可变的。
  3. 然后通过共享不变的部分,达到减少对象数量并节约内存的目的。
  4. 享元对象的优点:减少对象数量,节省内存空间
  5. 享元模式的缺点:维护共享对象,需要额外的开销(用一个线程来维护垃圾回收)
  6. 享元模式的本质:分离与共享。
分享到:
评论

相关推荐

    设计模式之享元模式

    享元模式是软件设计模式中的一种结构型模式,它的主要目的是为了提高性能,尤其是在处理大量对象时。在享元模式中,通过共享技术来有效支持大量细粒度的对象,从而减少内存消耗。《设计模式之禅》这本书是设计模式...

    设计模式的享元模式的例子

    享元模式是软件设计模式中的一种结构型模式,它的主要目的是通过共享大量细粒度对象来减少内存的使用,提高系统性能。在许多场景下,尤其是处理大量相似对象时,享元模式能显著减少内存开销。这个压缩包文件...

    设计模式-享元模式(讲解及其实现代码)

    享元模式是一种结构型设计模式,它通过共享已有对象来减少内存中对象的数量,从而达到降低系统内存占用、提高性能的目的。在软件工程中,当系统中存在大量相似或重复的对象时,享元模式尤为适用。 享元模式的核心是...

    设计模式(C#)之享元模式(Flyweight Pattern)

    享元模式是设计模式中的一种结构型模式,它主要通过共享已有对象来减少内存中对象的数量,从而提高系统性能。在C#编程中,享元模式尤其适用于那些创建大量相似对象且内存消耗较大的场景。本篇文章将深入探讨享元模式...

    C#面向对象设计模式纵横谈(12):Flyweight 享元模式(结构型模式) (Level 300)

    在这个“C#面向对象设计模式纵横谈(12)”中,我们将深入探讨享元模式的概念、实现方式以及如何在实际项目中应用。 享元模式的核心思想是区分对象的状态和行为。状态分为内部状态和外部状态,其中内部状态是对象共有...

    享元模式代码示例

    享元模式是一种结构型设计模式,它通过共享已有对象来减少内存中对象的数量,从而达到降低内存占用的目的。在面向对象编程中,当系统需要创建大量相似对象时,享元模式能够有效地提升性能,因为大部分对象是重复的,...

    享元模式代码+文档

    享元模式是一种结构型设计模式,它通过共享已有对象来减少系统中对象的数量,从而达到降低内存占用的目的。在软件工程中,当一个系统需要处理大量相似对象时,享元模式能够有效地提升性能,尤其在处理轻量级对象时...

    享元模式flyweight

    享元模式(Flyweight Pattern)是一种结构型设计模式,它能有效地减少系统中对象的数量,从而降低内存消耗,提高性能。这种模式通过共享大量相似对象的内部状态来达到这一目标,而只保留对象的外部状态在外部管理。...

    学习php设计模式 php实现享元模式(flyweight)

    享元模式(Flyweight Pattern)是软件设计中的一种结构型设计模式,它通过共享技术来支持大量细粒度的对象,以此来降低内存中对象的数量。在PHP中实现享元模式,可以帮助我们优化程序性能,特别是在对象数目过多时,...

    java自动拆装箱及享元设计模式

    享元设计模式是一种结构型设计模式,其主要目的是为了节省内存空间,通过共享大量相似对象来减少内存消耗。在Java中,享元模式通常用于创建大量细粒度的对象,如字符常量池、字符串常量池等。 3. 享元模式的核心...

    6.设计模式-享元模式1

    设计模式-享元模式 设计模式是软件设计中的一种解决方案,旨在提高代码的可维护性、灵活性和可重用性。享元模式(Flyweight Pattern)是结构型模式的一种,主要用于减少大量相似对象的内存占用,提高系统的性能和...

    享元模式Demo

    享元模式是一种优化资源使用的软件设计模式,尤其适用于对象创建成本较高或系统内存有限的情况。在计算机科学中,特别是编程领域,享元模式通过共享大量相似对象来减少内存占用,提高程序性能。它通过将对象的状态...

    享元模式,内含可运行代码和解释

    享元模式是一种经典的设计模式,属于结构型模式,它的核心思想是通过共享已经存在的对象来减少内存中的对象数量,从而提高系统性能。在许多场景下,特别是计算机编程中,我们可能会遇到大量的相似对象,比如在图形...

    23钟设计模式之享元模式

    享元模式是软件设计模式中的一种结构型模式,它的主要目的是减少对象的创建,从而提高系统性能,尤其是在处理大量相似对象时。享元模式通过共享技术来支持大量细粒度对象的复用,将享元对象的状态分为内蕴状态(不可...

    享元模式的分析以及实际应用.docx

    享元模式是一种优化资源利用的设计模式,主要用于减少创建和管理对象的数量,以达到节省内存的目的。在软件工程中,尤其是在处理大量相似对象时,享元模式能够显著提高系统的性能。享元模式通过共享那些可以共享的...

    设计模式享元模式PPT学习教案.pptx

    享元模式是一种设计模式,属于对象行为型模式,它的主要目的是减少系统中对象的数量,以提高性能和降低内存消耗。这种模式特别适用于那些细粒度的对象,比如在文本编辑器中,同一字符可能会频繁出现,如果为每个字符...

    设计模式_结构型_享元模式.md

    享元模式(Flyweight)是23种设计模式之一,属于结构型设计模式。该模式通过共享技术,有效地支持大量细粒度对象的复用。享元模式的目的是为了减少创建对象的数量,以减少内存占用和提高性能。 ### 细粒度对象 享元...

    java 23种设计模式.zip

    设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:...

    Java 23种设计模式15享元模式.pdf

    享元模式,作为Java设计模式中的重要组成部分,其核心理念在于通过共享机制来优化系统性能,减少内存消耗,尤其在处理大量细粒度对象时表现出色。以下是对享元模式的深入探讨,涵盖其动机、定义、结构、实例以及效果...

    享元模式1

    享元模式(Flyweight Pattern)是一种结构型设计模式,旨在减少大量相似对象的创建,降低系统资源的开销和内存压力。该模式通过共享已经存在的对象来大幅减少需要创建的对象数量,避免创建大量相似类带来的开销,...

Global site tag (gtag.js) - Google Analytics