其中一段代码:
|
我完全可以把 Work 接口换成一个普通的类,再功能上都能实现Decorator模式.为什么一定要用接口,这无疑是增加工作量?
有几个理由要使用类而不是接口:
1.使用Decorator模式目的是为了在旧系统的基础上增加新的功能,但是往往旧的系统使用的全是类,而不是接口,就是说他们开始就没有把架构设计成接口形式的(这也没有什么不对的).所以就要适应他们的类环境.而不是到处都是接口.
2.使用类能达到同样的目的而且能减少代码,例如我把Work接口换成WorkImpl:
|
这里我把接口全换成类,同样体现了Decorator的作用.有人会说接口灵活,可以有不同的实现,但这种说法站不住脚.假如我想把WorkImpl换成WorkImpl2类来实现,使用Decorator2来实现的话,我可以把上面代码改成:
|
如果使用接口,同样要改! 接口如下:
|
而且增加了设计接口和编写接口的工作量.
3.如果使用类的话,如果以后的类 WorkImpl变了,那麽,修改他的代码就可以,但如果使用接口,大家注意了,同样要改实现!也就是说仍然要改代码,所以使用接口的本质是没有变化的,实质并没有减小工作量.而增加的是编写接口的工作量.
其他的设计模式也是同样的道理,我看了几个,都可以把其中的接口通通换成类来实现.
大家也可以试试,目的都是减少代码,使系统灵活,而他们都能达到目的.