コンストラクターにパラメーターがあるクラスを装飾しますか?
-
22-07-2019 - |
質問
デコレータパターンを使用しており、パラメータを持つコンストラクタでクラスを装飾しています。
以下は、装飾クラスのコンストラクタです;
Public Sub New(ByVal repository As ISchedulingRespository)
Me.repository = repository
End Sub
私のデコレータクラスは装飾されたクラスから継承するため、次のようにコンストラクタを宣言する必要があります。
Public Sub New(ByVal schedulingService as SchedulingService, ByVal repository As ISchedulingRespository)
MyBase.New(repository)
Me.instance = instance
End Sub
したがって、デコレータクラスを作成するときは、クラスデコレータのインスタンスと、デコレートするクラスに必要なパラメータを渡します。これは以下で見ることができます。
Dim schedulingServiceDecorator As New SchedulingServiceEventDecorator(schedulingService, schedulingRepository)
これは私には正しくないようです。このパターンで何か不足していますか?
デコレーターコンストラクターでデコレーティングクラスを渡すことはできませんでしたが、このパターンで見られるすべての記事は、デコレーターにクラスのインスタンスを渡します。
これは、ニーズに合わせてパターンを変更する場合ですか?
多くの感謝
解決
デコレーターパターンでは、インターフェースから継承することになっています装飾されたクラスのem>、およびコンストラクターで実装を渡します。具体的な SchedulingService
クラスから継承しているようです。
所属していません StackOverflow