Bridge

『インターフェースが同じでも具体的実装例が違う』場合、それと、『そもそもの機能が違う』場合、この2つを独立して拡張したいときはBridgeパターン。

9. Bridge パターン | TECHSCORE(テックスコア)

main.cppは、

『インターフェースが同じでも具体的実装例が違う』場合というのは、『ハイフン(-)とアスタリスク(*)』
『そもそもの機能が違う』場合というのは、『テキストの出力と数値の出力』ということを言っている。

$ vi main.cpp 
$ g++ -o main main.cpp print.cpp print_base.cpp print_text_hyphen.cpp print_text_asterisk.cpp 
$ ./main 
-ABCDE-
*VWXYZ*
10
20
$

実装の拡張も、機能の拡張も、独立してできている。

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