VB.NETでAdapterパターンを体験してみた。
はじめに
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部分が悪いのかな?と切り分けが少なかったりするのでしっかりと覚えて使いこなしていきたいと思います!