10月21日の学び

昨日は勉強会の資料作成のためブログ更新はできず。。。

Proxyパターン

  • 呼び元と処理を実行するクラスの間に中間のクラスを生成する
  • 処理の実行時に初めて処理を実施するクラスをインスタンス化する
  • サンプルコードを見てインタフェースは要はAPIを実装するクラスだということがわかった

Stateパターン

  • if-elseの分岐の代わりに状態毎にクラスを作成する
  • 状態クラスはシングルトン
  • 状態クラス呼出し時にthisにより呼び出し元自身を引き渡すことで、呼び出し先から呼び出し元の状態を変更できる
  • thisのそんな使い方があるとは知らなかった

そもそも抽象クラスとインタフェースの違い

  • 抽象クラスは「同一グループに属すると見做した具象型から共通部分を抽象化する」言語機能
  • インタフェースは「API・仕様を定義する」言語の機能
  • 前者は「継承に力点」をおいていて「後者は実装」に力点をおいている
  • どちらを使うかは最終的にはソースコードの可読性できめるべき
  • C++にもSimulaにもインタフェースはない
  • Go言語にはインタフェースはあるが継承はない
  • つまりどちらも必ず必要というわけではない

インタフェースと抽象クラス - Create the non-existing future by your own