TemplateMethod

内部の具体的な処理が違っても、大まかな処理の流れが定型化されたものである場合は、TemplateMethodパターンを使うことができる。

3.TemplateMethod パターン | TECHSCORE(テックスコア)

詳細は、
Sample/designpattern/template_method/template_method/src/template_method at master · bg1bgst333/Sample · GitHub
を見てもらうとして、

main.cppは、

ptrはヘッダとフッタの付いた文字列を定型処理で出力するので、ヘッダとフッタをセット。
ptr2はファイルに文字列を定型処理で出力するので、ファイル名と本文をセット。

$ ls
main      print_file.cpp  print_header_footer_ex.cpp  print_proc.cpp
main.cpp  print_file.h    print_header_footer_ex.h    print_proc.h
$ g++ -o main main.cpp print_proc.cpp print_header_footer_ex.cpp print_file.cpp 
$ ./main 
--S--
ABCDE
--E--
$ ls
main      print_file.cpp  print_header_footer_ex.cpp  print_proc.cpp  test.txt
main.cpp  print_file.h    print_header_footer_ex.h    print_proc.h
$ cat test.txt 
ABCDE$

ヘッダとフッタの付いた文字列が出力されている。
ファイルtest.txtにも元の文字列は出力されている。

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