0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

はじめてのデザインパターン~Adapterパターン~

0
Last updated at Posted at 2022-05-01

参考

参考になります。ありがとうございます。

どんなもの?

異なるクラス同士のメソッドの違いを吸収して、うまく適合させるパターン

メリットは?

使用側(クライアント側)からどんなメソッドを読んでいるか意識しなくていいので、バージョンアップや突然の仕様変更時に改修のコストが減る

どんな時に使う?

既に使用実績があり、十分テストがされたクラスを再利用したい時

但し、この時にこのクラス自体に対して少しでも手を加えてしまうと、せっかくの使用実績が損なわれ、全動作テストをしなければいけなくなるのでこれは避けたい

そんな時に使う。

使い方

イメージ

  • 使いたいメソッドを持つクラスAを新しく作るクラスB(Adapter, インターフェース)でラップする
  • 新しく作ったクラスBでクラスAをextendsし、そこからparent::~で親のメソッドを呼び出す
    • これによりメソッド名の差分をクラスBで吸収
  • 呼び出し側はクラスBのメソッドを呼び出すだけなので、中でどんなメソッドを読んだイルカは何も意識しない

※上記は継承を使ったパターンだが、委譲を使ったパターンもある

Github

記事内のサンプルコードそのまんまですが、Githubに掲載。

https://github.com/Kuma-inataku/design_pattern/tree/develop/adapter

※サンプルコードそのままとはいえ、記事のままでは実際にテキストエディタに書いてみて値変更したりできないのでその点は実際に書いてみるのが大事かと。

所見

  • 個人的にはextendsでクラス単位での依存関係をなるべく作りたくないと思うので、委譲がシンプルでいいと思った
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?