[Golang]デコレーターパターンを学ぼう!~Version 2~

こんにちは。KOUKIです。

以前、デコレーターパターンについて記事を書きましたが、別パターンでも実装したので紹介します。

デコレーターパターン

デコレーターパターンは、あるコアとなる機能に柔軟に機能を追加していくことができるパターンです。まさにデコレーター(装飾)と呼ぶにふさわしいです。

実装

下記のコードを見てください。

これは、Pizzaをイメージしてください。

ベースとなる生地の上に肉や玉ねぎをトッピングします。これがデコレーターのイメージです。

テストコード

まだ実装の途中ですが、テストコードを書いていきましょう。

AddIngredientメソッドの戻り値のテストを実装しました。

しかし、当然ながらテストは失敗します。

次に、以下のテストコードを実装します。

これは、デコレーターの挙動を知るのにちょうど良いコードです。

Meat/Onionの元々の機能にPizzaDecoratorで機能を追加しています。

もちろんテストは失敗しますが、実行してみましょう。

AddIngredientの実装

AddIngredientメソッドの実装の続きをしましょう。

テストを実行します。

OKですね。

おわりに

デコレーターパターンは、使い所がたくさんありそうなパターンですね。

機能拡張が予想される処理は、以下のようにインターフェースにして抽象化すると密結合を避けた実装ができます。

メソッドを実装するときは、このような考え方を取り入れることも有効ですね^^

それでは、また!

Go記事まとめ

デザインパターンまとめ

Go記事をまとめます。

ソースコード

decorator.go

decorator_test.go

コメントを残す