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