23种设计模式之(十二)享元模式(python_c++实现)

23种设计模式之(十二)享元模式(Flyweight)

本文主要介绍23种设计模式之享元模式,附详细python/c++示例代码。
- 概念
- 应用场景
- 注意事项
- 代码示例
- 总结
- 代码链接


享元模式(Flyweight)

概念

享元模式主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式,尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。

GoF对享元模式的定义是:运用共享技术有效地支持大量细粒度的对象。

应用场景

(1)、系统有大量相似对象。

( 2)、需要缓冲池的场景。

代码示例

C++代码示例

/************************************************************************/
/* 设计模式专题
/*
/* 外观模式
/*
/* Author  : zzl
/*
/* 编程环境: window10 vs2010
/*
/* Date    : 20180916
/************************************************************************/

#include 


class SubSystemA
{
public:
    void doThing()
    {
        printf("SubSystemA run\n" );
    }
};

class SubSystemB
{
public:
    void doThing()
    {
        printf("SubSystemB run\n" );
    }
};

class SubSystemC
{
public:
    void doThing()
    {
        printf("SubSystemC run\n" );
    }
};


class Facade
{
public:
    Facade()
    {
        sysA = new SubSystemA;
        sysB = new SubSystemB;
        sysC = new SubSystemC;
    }
    ~Facade()
    {
        delete sysA;
        delete sysB;
        delete sysC;
    }
public:
    void doThing()
    {
        sysA->doThing();
        sysB->doThing();
        sysC->doThing();
    }
protected:
private:
    SubSystemA *sysA;
    SubSystemB *sysB;
    SubSystemC *sysC;
};

void main()
{
    Facade *f = new Facade;
    f->doThing();
    delete f;
}

python代码示例

# -*- coding: utf-8 -*-
###################################################################
# 设计模式专题
# 
# 外观模式
# 
# Author  : zzl
# 
# 编程环境: window10 python2.7
# 
# Date    : 20180916
##################################################################

class SubSystemA(object):
    def do_thing(self):
        print("SubSystemA run")


class SubSystemB(object):
    def do_thing(self):
        print("SubSystemB run")


class SubSystemC(object):
    def do_thing(self):
        print("SubSystemC run")


class Facade(object):
    def __init__(self):
        self.sysA = SubSystemA()
        self.sysB = SubSystemB()
        self.sysC = SubSystemC()

    def do_thing(self):
        self.sysA.do_thing()
        self.sysB.do_thing()
        self.sysC.do_thing()


if __name__ == "__main__":
    f = Facade()
    f.do_thing()



源码链接

设计模式(十二)享元模式示例代码(python–c++)

你可能感兴趣的:(设计模式)