设计模式[17]-Flyweight

简介:
Type: Structural Flyweight: 避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类)。找出这些对象群的共同点,设计一个元类,封装可以被共享的类。另外,还有一些特性是取决于应用(context),是不可共享的,这也Flyweight中两个重要概念内部状态intrinsic和外部状态extrinsic之分。
#include <iostream>  
#include <map>   
using namespace std;  
#define State int  

class Flyweight   
{  
public:  
    virtual void operation(State extrinsicState) = 0;  
};  

class ConcreteFlyweight: public Flyweight  
{  
public:  
    ConcreteFlyweight(State key):intrinsicState(key){};  
    void operation(State extrinsicState)   
    {  
        cout<<"ConcreteFlyweight intrinsicState:"<<intrinsicState  
            <<" extrinsicState"<<extrinsicState<<endl;  
    };  
private:  
    State intrinsicState;  
};  

class UnsharedConcreteFlyweight: public Flyweight  
{  
public:  
    void operation(State extrinsicState)   
    {   
        cout<<"UnsharedConcreteFlyweight"<<endl;  
    };  
private:  
    State allState;  
};  

class FlyweightFactory  
{  
public:  
    Flyweight* getFlyweight(State key)  
    {  
        Flyweight* pFlyweight = m_Flyweights[key];  
        if(pFlyweight == NULL)  
        {  
            pFlyweight = new ConcreteFlyweight(key);  
            m_Flyweights[key] = pFlyweight;  
        }  
        return pFlyweight;  
    };  
private:  
    map<State, Flyweight*> m_Flyweights;  
};  

int main()  
{  
    FlyweightFactory flyweightfactory;  
    flyweightfactory.getFlyweight(0)->operation(0);  
    flyweightfactory.getFlyweight(1)->operation(0);  

    system("pause");  
    return 0;  
}

目录
相关文章
|
设计模式 存储 安全
二十三种设计模式全面解析-享元模式(Flyweight Pattern)详解:构建高效共享的对象结构
二十三种设计模式全面解析-享元模式(Flyweight Pattern)详解:构建高效共享的对象结构
188 0
|
7月前
|
设计模式 存储 缓存
【设计模式】【结构型模式】享元模式(Flyweight)
一、入门 什么是享元模式? 享元模式(Flyweight Pattern)是一种结构型设计模式,旨在通过共享对象来减少内存使用,特别适用于存在大量相似对象的情况。 它的核心思想是将对象的内在状态(不变
280 16
|
设计模式 存储 Java
【设计模式——学习笔记】23种设计模式——享元模式Flyweight(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——享元模式Flyweight(原理讲解+应用场景介绍+案例介绍+Java代码实现)
193 0
|
存储 设计模式 Java
浅谈JAVA设计模式之——享元模式(Flyweight)
运用共享技术有效地支持大量细粒度的对象。
238 0
浅谈JAVA设计模式之——享元模式(Flyweight)
|
设计模式 存储 数据库
认真学习设计模式之享元模式(Flyweight Pattern)
认真学习设计模式之享元模式(Flyweight Pattern)
159 0
|
设计模式 存储 缓存
设计模式~享元模式(flyweight)-09
目录 (1)优点: (2)缺点: (3)使用场景: (4)注意事项: (5)应用实例:
109 0
|
设计模式 Java 数据库
Java设计模式-享元模式(Flyweight Pattern)
Java设计模式-享元模式(Flyweight Pattern)
|
设计模式 存储 Java
从零开始学设计模式(十二):享元模式(Flyweight Pattern)
享元模式(Flyweight Pattern)指的是运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。
392 0
从零开始学设计模式(十二):享元模式(Flyweight Pattern)
|
存储 设计模式 缓存
设计模式实战之享元模式(Flyweight Pattern)
本文详细介绍了享元模式(Flyweight Pattern)的原理、实现及应用场景。享元模式通过复用不可变对象节省内存,适用于系统中存在大量相似对象的场景,如象棋游戏中的棋子或文本编辑器中的字符格式。文章以具体案例(象棋、文本编辑器、Shape等)解析了如何通过工厂模式和Map缓存实现享元,并分析了Java中Integer与String类对享元模式的应用。此外,还对比了享元模式与单例、缓存、对象池的区别,强调其核心目的是节省空间而非时间。最后提醒,享元模式可能对垃圾回收不友好,需谨慎评估是否真正能优化内存使用。
247 0
设计模式实战之享元模式(Flyweight Pattern)
|
设计模式 数据库连接
【愚公系列】2021年12月 二十三种设计模式(十一)-享元模式(Flyweight Pattern)
【愚公系列】2021年12月 二十三种设计模式(十一)-享元模式(Flyweight Pattern)
163 0
【愚公系列】2021年12月 二十三种设计模式(十一)-享元模式(Flyweight Pattern)

热门文章

最新文章