『インターフェースが同じでも具体的実装例が違う』場合、それと、『そもそもの機能が違う』場合、この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