设计模式[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;  
}

目录
相关文章
|
7月前
|
设计模式 存储 安全
二十三种设计模式全面解析-享元模式(Flyweight Pattern)详解:构建高效共享的对象结构
二十三种设计模式全面解析-享元模式(Flyweight Pattern)详解:构建高效共享的对象结构
|
设计模式 存储 Java
【设计模式——学习笔记】23种设计模式——享元模式Flyweight(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——享元模式Flyweight(原理讲解+应用场景介绍+案例介绍+Java代码实现)
69 0
|
设计模式 存储 数据库
认真学习设计模式之享元模式(Flyweight Pattern)
认真学习设计模式之享元模式(Flyweight Pattern)
70 0
|
设计模式 存储 缓存
设计模式~享元模式(flyweight)-09
目录 (1)优点: (2)缺点: (3)使用场景: (4)注意事项: (5)应用实例:
50 0
|
存储 设计模式 Java
浅谈JAVA设计模式之——享元模式(Flyweight)
运用共享技术有效地支持大量细粒度的对象。
141 0
浅谈JAVA设计模式之——享元模式(Flyweight)
|
设计模式 Java 数据库
Java设计模式-享元模式(Flyweight Pattern)
Java设计模式-享元模式(Flyweight Pattern)
|
设计模式 存储 Java
从零开始学设计模式(十二):享元模式(Flyweight Pattern)
享元模式(Flyweight Pattern)指的是运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模式。
301 0
从零开始学设计模式(十二):享元模式(Flyweight Pattern)
|
存储 设计模式 缓存
设计模式实战之享元模式(Flyweight Pattern)
设计模式实战之享元模式(Flyweight Pattern)
170 0
设计模式实战之享元模式(Flyweight Pattern)
|
设计模式 数据库连接
【愚公系列】2021年12月 二十三种设计模式(十一)-享元模式(Flyweight Pattern)
【愚公系列】2021年12月 二十三种设计模式(十一)-享元模式(Flyweight Pattern)
【愚公系列】2021年12月 二十三种设计模式(十一)-享元模式(Flyweight Pattern)
|
C#
C#设计模式之十一享元模式(Flyweight Pattern)【结构型】
原文:C#设计模式之十一享元模式(Flyweight Pattern)【结构型】 一、引言   今天我们要讲【结构型】设计模式的第六个模式,该模式是【享元模式】,英文名称是:Flyweight Pattern。
1272 0