コンストラクターにパラメーターがあるクラスを装飾しますか?

StackOverflow https://stackoverflow.com/questions/1232716

  •  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 クラスから継承しているようです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top