Composite

ファイルとフォルダの関係のように、コンテンツとそのコンテンツを含むコンテナの構造が再帰的になっている場合、共通のインターフェースを実装して、意識せずに操作ができるような構造にしておく。
これがCompositeパターン。

11. Composite パターン | TECHSCORE(テックスコア)

main.cppで、

いろいろ突っ込んで、最後に削除。

$ vi main.cpp 
$ g++ -o main main.cpp container.cpp content.cpp 
$ ./main 
<subsubcontent> added!
<subsubcontainer> added!
<subcontent> added!
<subcontainer> added!
<subcontent> content removed!
<subsubcontent> content removed!
<subsubcontainer> container removed!
<subcontainer> container removed!
<container> container removed!
$

全部削除されてる。

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