おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

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部分が悪いのかな?と切り分けが少なかったりするのでしっかりと覚えて使いこなしていきたいと思います!