はじめに
GoFのデザインパターンの1つであるAdapterパターンを体験してみました。
Adapterパターンとは
Adapterパターンとは既に提供されているクラスを特定の部分へ使いまわす際に良い感じに使えるように変換させるデザインパターンです。 既に提供されているクラスを使いたいけど、一部用途が合わなくて使えない~~という時に使うイメージです。
サンプルコード
以下は元々あったライフスタイルクラスへAdapterパターンを適用し、夏休み用のライフスタイルを作成するサンプルコードです。 (最初に引用した記事のサンプルコードをVB.NETに置き換えた内容になっています。)
Module Program Sub Main() Dim summerVacation As ISummerVacation = New SummerVacationLifeStyle() Console.WriteLine("---- 夏休みの平日の過ごし方 ----") summerVacation.SummerVacationWeekday() Console.WriteLine("") Console.WriteLine("---- 夏休みの休日の過ごし方 ----") summerVacation.SummerVacationHoliday() End Sub End Module '元々あったライフスタイルクラスを使いまわしたい Public Class LifeStyle Public Sub Weekday() Console.WriteLine("早起きする") End Sub Public Sub Holiday() Console.WriteLine("いっぱい寝る") End Sub End Class ' 夏休み用の過ごし方を表すインターフェースを用意します。 Public Interface ISummerVacation Sub SummerVacationWeekday() Sub SummerVacationHoliday() End Interface '夏休み用ライフスタイルクラスで元々あったクラスを利用 + 独自にカスタマイズします。 '今回は平日の過ごし方を夏休み用にカスタマイズしました。 Public Class SummerVacationLifeStyle Implements ISummerVacation Private ReadOnly _lifeStyle As LifeStyle Public Sub New() _lifeStyle = New LifeStyle() End Sub Public Sub SummerVacationWeekday() Implements ISummerVacation.SummerVacationWeekday _lifeStyle.Weekday() Console.WriteLine("と思ったけど...夏休みなので二度寝をした。") End Sub Public Sub SummerVacationHoliday() Implements ISummerVacation.SummerVacationHoliday _lifeStyle.Holiday() End Sub End Class
---- 夏休みの平日の過ごし方 ---- 早起きする。 と思ったけど...夏休みなので二度寝をした。 ---- 夏休みの休日の過ごし方 ---- いっぱい寝る。
おわりに
Adapterパターンを用いると既存のテスト済みのクラスを使って処理を行えるので新しく作り込むよりもバグの心配も少ないですし、万が一バグが出てもadapter部分が悪いのかな?と切り分けが少なかったりするのでしっかりと覚えて使いこなしていきたいと思います!