C++ソフトウェア設計 読書会vol.29
https://scrapbox.io/files/677e58cd6851aa4933a854f0.jpeg
#C++ソフトウェア設計
開催日時
2026年4月22日(水) 21:00~22:30
開催URL
https://cpp-osaka.connpass.com/event/390900/
参加人数
3人
読み進め方
ウォーミングアップ
ガイドライン 25:通知を抽象化するには Ob­server パターン
Ob­server パターンの古典的実装
本書の範疇ではありません
それでも解説してほしいな
複数のobserverを内部で持っているSubjectクラス
std::vectorやstd::listで持っているのかな
vectorだとデタッチしたときにずらしたり、メモリ再確保が発生したりするのでlistで持つのがいい
std::setにポインタを渡す
setにポインタ渡すのはあまり見ない
生存期間を意識しなければならなくなる
読者は問うでしょう。「こういう時は std::unique_ptr か std::shared_ptr を使うんじゃないの?」
次回ここから
お悩み雑談室
操作履歴 vs スナップショット
用語集
ISP
インタフェース分離の原則
ISP は SRP の特殊なケースと捉える。
SRP
単一責任の原則
OCP
開放/閉鎖原則
LSP
サブタイプ(派生クラス)が満たすべきふるまい
リスコフの置換原則 (ガイドライン6)
サブタイプでは事前条件を強化してはならない
サブタイプは事後条件を弱めてはならない
サブタイプの関数の戻り型は共変(covariance)でなければならない
サブタイプの関数パラメータは反変(contravariance)でなければならない
スーパタイプの不変条件はサブタイプでも維持されなければならない
DIP
依存関係逆転の原則(ガイドライン9)
依存関係を管理するには、具象型や実装詳細ではなく抽象化に依存すべきである