Flyweight

Flyweightパターンは、既に生成したインスタンスと実質同じであれば、新たに生成せず、他のインスタンスと共有することでリソースを無駄なく使うような構造。

20.Flyweight パターン | TECHSCORE(テックスコア)

main.cppで、

"ABCDE"を2回、"XYZ"を1回、取得しているが、

$ vi main.cpp 
$ g++ -o main main.cpp framed_string.cpp framed_string_factory.cpp 
$ ./main 
create ABCDE frame
*******
*ABCDE*
*******
get ABCDE frame
*******
*ABCDE*
*******
create XYZ frame
*****
*XYZ*
*****
$

2回目の"ABCDE"は1回目の文字列を取得しているだけで、生成はしていない。

Sample/designpattern/flyweight/flyweight/src/flyweight at master · bg1bgst333/Sample · GitHub