【デザインパターン勉強】Decoratorメソッド
ざっくり概要
decoratorとは 装飾 の意味です。 あるコアクラスを元にして機能をかぶせていく手法です。
今回は簡略化のために1つのコア、一つの機能をかぶせた例を用いて説明します。
コード
class PlainNumber(): def __init__(self,num): self._num = num class MultiplicationNumber(PlainNumber): def __init__(self,num): self._number = num def render(self,num): return self._number.render() * num if __name__ == '__main__': plain_num = PlainNumber(11) multiple_output = MultiplicationNumber(plain_num) print("11*2=",multiple_output.render(2)) # 11*2= 22
ざっくり解説
コードの流れは以下の通りです。
- 数字を設定(PlainNumberクラス)を設定
- 掛け算(MultiplicationNumber)機能を追加し
- 数字×掛け算を実行
MultiplicationNumberはPlainNumberを継承しているので掛け算が実行出来ますね。
現実的な利用シーン(個人的感想)
- 長所
開発のシーンでは、最初に決めた仕様し、実装し、あとから機能追加といったことがあると思います。 そういった際、設計を変えずに追加することが出来て、便利なんじゃないでしょうか。
- 短所
デコレートをしすぎると管理しづらい気がします。(意図せず重複した機能を持ったクラスを追加するなど)そこらへんは長所とトレードオフな気がしますが
参考文献
Javaで学ぶデザインパターン入門 https://github.com/faif/python-patterns/blob/master/structural/decorator.py