接口编程

3

背景

我正在审查我的团队中一个开发人员实现的应用程序。他在应用程序中使用了许多接口。该应用程序具有典型的服务层、数据层和从网站传输到数据库的POCO对象。


假设

使用了IOC (通过Unity) 来注入运行时的具体Service和Data类。所有的POCO对象只有公共属性上的get和set方法。


问题

我理解为什么在服务层和数据层使用接口,但为什么要在所有POCO对象上使用接口呢?这是否过度设计?


1
http://programmers.stackexchange.com/ 可能更适合这个问题。 - kirilloid
2个回答

4

POCO接口有用吗?如果有,它们可能不会过度设计。但是,如果它们没有被使用,则违反了YAGNI原则。

然而,更一般地说,我开始认为接口上的属性是设计异味,因为它们违反了Demeter法则

我最近发布了更好的抽象思考的一些想法。


阅读了你的博客文章,非常有趣。 - Dustin Davis
1
接口不是契约:http://blog.ploeh.dk/2010/12/02/InterfacesAreNotAbstractions.aspx。 - Mark Seemann
2
接口并不是一个完整的契约,因为它只定义了成员的语法而没有定义其语义。您可以使用真正的设计契约来实现这一点。在.NET中,请查看代码契约。 - Jordão
@Rex M:是的,但这关乎属性所暗示的内容。我认为对于Java中的属性方法,同样适用我的论点。 - Mark Seemann
1
@Mark-Seemann - 你的博客很有趣,读起来也很好。开发者的意图是松耦合。Employee类实现了IEmployee接口,每当传递一个Employee时,它就是接口 - 但为什么要费这个劲呢?对于不实现任何行为的类,我觉得这太过了。他的论点是你可以替换Employee的具体实现。对于POCO对象,我想不出任何理由。 - Alan Alcock
显示剩余4条评论

4

看起来你的POCO只是用作数据传输对象,如果是这样,它们只是携带信息,没有行为。为它们创建接口是过度设计。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接