感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Template MethodパターンとAdapterパターン、Singletonパターン。

スポンサーリンク

Template Methodパターン

Template Methodパターンは継承を利用する。
具体的な処理内容が、クラスによって変わる部分を抽象メソッドとして定義する。
抽象メソッドを持つ抽象クラスを継承することで、定義したメソッドの実装が保証される。

スマホという抽象的なオブジェクトを考えてみよう。
スマホは「真ん中のボタンを押せば、画面がつく」という機能は共通して持っているわけだ。
でも、この「ボタンを押す」という機能の中では、電気を流したり、液晶のライトをつけたり、暗唱画面が出たり、そういう処理が裏で動いている。
このような裏で動く処理が、スマホオブジェクトを継承したクラスが実装していることを保証されるようにする。

すると、スマホオブジェクト継承したクラスを使う側から見たら、ボタンを押したら必ず画面がつく、という動作が保証される。
たとえ、画面の付き方がどんな風でも、である。

この場合、「ボタンを押す」という機能はtemplata methodとなる。
裏で動く電気を流す、液晶のライトをつける、とかそういうのは抽象メソッドとなる。

クラス図はこんな感じ。

Singletonパターン

Singletonパターンはオブジェクトの生成に関するパターン。
生成されるインスタンスの数を制限する。
他のクラスからSingletonインスタンスを生成することはできない。
要は、Singleの名の通り、インスタンスが1個しか生成されないことを保証するパターン。

この本で初めて見た言葉だけど、「サブクラスの型はその親クラスの型と置換可能」というのは継承の一般的な原則で、「リスコフの置換の原則」というらしい。
LSP:The Liskov Substitutuion Principle

ちなみに、ハリウッドの原則(The Hollywood Principle)は「Don't call us. We'll call you.」「我々を呼び出すな。必要なときは、我わらが君を呼び出す」という原則である。

Adapterパターンのいいところ

・既存のクラスを変更しなくて済む。
→つまり、テスト済のクラスを修正せずに、利用することができる。
・一言で言うと、「一皮被せて再利用」
・利用側は、アダプタの向こう側を意識する必要がない。

読んだ本

PHPによるデザインパターン入門

PHPによるデザインパターン入門

感謝のプログラミング

今回で感謝のプログラミングは【393時間目】
10000時間まで、あと【9607時間】