日々の技術的に関する経験を書いていきます。脱線もしますが助けになれば幸いです。見るAdapterパターンとは「すでに提供されているもの」を「必要なもの」とのズレを埋めて使えるようにするためのものです。別名Wrapperパターンとも呼ばれていて「包む」とも言われたりするようです。本の中ではコンセントから出てくる交流100Vの電流(すでに提供されているもの)パソコンの充電に使うACアダプター(必要な電流に変換するもの)を例にあげて説明していました。コンセントの電流とパソコンの充電に必要な電流のズレをACアダプターで埋めているわけですね。これをプログラムの世界にも導入してやろうということです。今回は継承を用いたAdapterパターンの実現をします。委譲を使った方法もあるのでまた後日。今回の登場人物は4つです。自身の持っている文字を()で囲んで表示するメソッドと、*で囲んで表示するメソッドを持つPrintインターフェース実際にMainクラスから見て使いたいインターフェースを表す(既存のBannerクラスのメソッドは直接使いたくないものとする)PrintBannerクラスAdapterの役割を果たすBannerクラスを継承・拡張してMainクラスが望む形で()及び**で囲んで表示するメソッドの提供を行うMain(実行ファイル)PrintBannerクラスを使って文字の表示を行うBannerクラスの存在は知らないし使えないものとするプログラムBanner既存のプログラムと仮定しているクラスです。MainはshowWithParen()やshowWithAster()メソッドは使いたいけどそのメソッドのままでは使いたくない状態です。}}PrintMainクラスからはこのインターフェースを参照してメソッドを使っていきます。void;}PrintBannerPrintインターフェースを実装して、Bannerクラスを継承。Mainから使いやすい状態になるようにしています。このパターンの心臓部です。main.js(Hello)*Hello*Main内ではPrintBannerクラスのインスタンスをPrintインターフェースに入れて使用しており、Printインターフェースで宣言されているメソッドのみ気にして使っていれば良い状態となりました。「Banner何それ美味しいの」状態になっていて、Bannerクラスで宣言されているメソッドは完全に隠れています。パソコンがコンセントから出てくる電流のことは何も把握していないのと同じ状態となりました。「既存のクラスを使いたいけどそのまま使うのは結構しんどいし、書き直したりするのものな...」という時には、使いやすい形にAdapterを書いてあげれば既存のクラスに手を加えずに容易に使える形になります。まとめシンプルで手軽に使えそうなパターンでした。既存のサービスを拡張する際には使えそうなパターンだと思います。(使い倒さないといけないクラスがあった場合はそのクラス分割したほうが良さげだけど。)継承を使った実現方法があるので、またまとめ次第記事を上げてリンク貼ります。ありがとうございました。-Adapter(継承)-関連記事2018-03-18Rubyのtapメソッドが便利なので紹介するRubyのObject#tapが便利だったので紹介します。...2018-02-26KotlinでRubyのselectメソッドみたいなやつ作ったKotlinの勉強二日目で、関数やらラムダ式やらを勉強しました。-Prototype-今回はprototypeパターンを書いてみました。今回はSingletonパターンを書いてみます。広告スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。