Proxy

Proxyパターンは、代理人(Proxy)でもできる処理は代理人が処理し、できない処理は本体が行うような構造。

21.Proxyパターン | TECHSCORE(テックスコア)

main.cppで、

class_proxy_printのコンストラクタに渡したclass_simple_printはnewで生成しているが、deleteがない。
実は、class_proxy_printの中でメンバとしていて、デストラクタでdeleteしているのである。
class_proxy_printは演算子オーバーロードなどで、実質的にclass_simple_printのポインタのような役割となっている。
このようなものをスマートポインタといい、このスマートポインタの元になっている仕組みがProxyパターン。

$ vi main.cpp 
$ g++ -o main main.cpp simple_print.cpp proxy_print.cpp simple_print_factory.cpp 
$ ./main 
ABCDE
FGHIJ
KLM
NOP
VWXYZ
delete simple_print_
delete simple_print_
$

class_simple_printは破棄されている。

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