我使用了装饰器模式,并且用一个带参数的构造函数来装饰一个类。
下面是类装饰的构造函数;
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)这在我看来是不正确的。我是不是在这个模式中遗漏了什么?
我可以简单地不在装饰器构造函数中传入装饰类,但是在此模式上看到的每个文章都将被装饰类的一个实例传递给装饰器。
这是为了满足您的需求而修改模式的情况吗?
非常感谢
发布于 2009-08-05 11:47:06
在Decorator Pattern中,您应该继承装饰类的接口,然后在构造函数中传递实现。看起来您是从具体的SchedulingService类继承的。
https://stackoverflow.com/questions/1232716
复制相似问题