学びを揉む

コラム

抽象化と具体化の往復運動

あまり細かなことを考えると継続性に欠けるので、勉強でまずある情報を得たときの咀嚼方法として、その情報に対して「例えば?」か「要するに?」という問いで展開して、上の図のように具体と抽象を回転させると理解が深まるんじゃないかと思い、ちょっとやってみた。

Swiftのデリゲートを例に展開してみる

情報

delegateは英語で「人に任せる」という意味を持っており、「あるクラスから他のクラスに処理を任せる」というデザインパターンです。

要するに

あるオブジェクトを使うクラスに具体的な処理内容を移譲する。

例えば

TextFieldクラスはKeyboardのreturnを押されたときに呼ばれる抽象的なメソッドを持つプロトコルを持っている。このプロトコルを継承した親のViewControllerが自身の持つtextFieldのオブジェクトのdelegeteにselfを代入し、プロトコルの抽象メソッドを実装することで、実際にそのtextFieldオブジェクトでreturnが押されたときの具体的な内容を実装できる。

要するに

行いたいタイミングは決まっているがその具体的処理内容を抽象化し、オブジェクトとして実際に使われる親クラスに具体的な処理内容を任せたい場合にdelegateを実装する。

例えば

Reactで親コンポーネントから子コンポーネントにfunctionをpropsで渡して、子コンポーネントの挙動のタイミングで親コンポーネントのStateを更新したりするのに似ている。

要するに

移譲するっていうのは、処理内容を差し込まれることと同義である。

まとめ

このように、要するに=>例えば=>要するに=>例えば...と繰り返す事で、その情報に対する理解度が深まる。(ような気がする。。。)

タイトルとURLをコピーしました