Украсить класс, конструктор которого имеет параметры?

Я использую шаблон декоратора и украшаю класс конструктором с параметрами.

Ниже представлен конструктор класса decorating;

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)

Это не кажется мне правильным. Я что-то упустил с этим шаблоном?

Я мог бы просто не передать класс декорирования в конструкторе декоратора, но каждая статья, увиденная в этом шаблоне, передает экземпляр декорируемого класса в декоратор.

Является ли это случаем изменения шаблона в соответствии с вашими потребностями?

Огромное спасибо


person c00ke    schedule 05.08.2009    source источник


Ответы (1)


В шаблоне декоратора вы должны наследовать от интерфейса оформленный класс, а затем передать реализацию в конструкторе. Похоже, вы наследуете от конкретного класса SchedulingService.

person Ben Lings    schedule 05.08.2009
comment
+1, Декоратор наследуется не от декорированного класса, а от интерфейса. Предполагается, что украшенный класс передается в конструктор, потому что вы используете интерфейс, и только конструктор зависит от реализации. - person Daff; 05.08.2009