元データ分析の会社で働いていた人の四方山話スマートフォン用の表示で見る元データ分析の会社で働いていた人の四方山話この広告は、90日以上更新していないブログに表示しています。Methodを読む本に出てくる例では何がうれしいのかよく分からなかったので、平行して結城さんの「Java言語で学ぶデザインパターン入門」も片手に読み進めることにする。残念ながらRuby脳ではないので、とりあえずPythonのコードに書き写しながら学んで行くという以上な遠回りスタイルとなっている。非常に単純な話で、スーパークラス(本には基底クラスとあった)にロジックを記述し、具体的な処理は、そのクラスを継承したサブクラスで実現するという話。いい例が思いつかないので、結城さんの本にもあった、文字と文字列を出力するような例を書いてみた。Javaと比較して、RubyやPythonでデザインパターンを実現するためには若干クセがあることが判明。その理由の一つが抽象クラスの存在である。Javaではabstractとfinalを駆使していい感じにスーパークラスとサブクラスでロジックと実際の処理を切り分けられているのに対して、RubyやPythonには抽象クラス自体が多分ないので(適当)、スーパークラスのメソッドを呼び出したら例外を投げるようにすればいいらしい。私たちにできるもっとも現実的な方法は、抽象メソッドを誰かが呼び出そうとしたときに例外を投げることです。hello.display()特徴というかポイントスーパークラスにロジックを書いて、サブクラスで実際の処理を実現する。このとき、スーパークラスの設計がポイントとなる。スーパークラスでは詳細に記述するようにしておけば、それを継承するサブクラスでの実際の処理のための記述量は減るが同時に使い回せるシーンが限定される。反対に、スーパークラスでは簡易な記述にとどめておけば、それを継承するサブクラスでの実際の処理のための記述量が増えるが同時に多くのシーンで使い回す事ができる。今回の非常に簡単な例で言えば、openして5回outしてcloseするという一連の処理の記述にとどめているので、それに当てはまるようなものなら何でも継承して使い回す事ができる。開会式して、5週は走って、閉会式して、とか入社して、5日働いて、辞めて、とかか。(適当すぎる)ん〜、分かったような分からないような。練習問題が掲載されていない本は表面的な理解はできるけど、なかなか身に付いたという気分には慣れないという罠。好評のため改訂増補しています。Entriesはてなブログをはじめよう!rindai87さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。