【问题标题】:Is the use of blank interfaces a bad design?使用空白接口是一个糟糕的设计吗?
【发布时间】:2011-05-09 08:13:27
【问题描述】:

我正在考虑创建一个接口并将其应用于某个命名空间中的所有对象。

我将使用它的场景:我想为这些对象创建一个通用处理程序,并且我想强制通用参数只接受实现此特定接口的类型。

这是一个糟糕的设计,还是可以接受空白接口?

【问题讨论】:

  • @Cpfohl:我的问题似乎与您链接的问题非常相似。似乎这个其他问题写得更晦涩(检查“查看”计数),并且在回复中没有很好地涵盖。
  • 不告诉你你必须把它拿下来! :) 我只是指出它,以防您从中获得任何额外信息。

标签: design-patterns interface


【解决方案1】:

在我看来他们没有错。它们的很多优势在于与(生成的)部分类相结合。

【讨论】:

    【解决方案2】:

    如果它是空白的,你为什么要创建这个界面?每节课的内容是什么?他们之间有任何的共同点吗?如果这个问题的答案是否定的,那你为什么要为每个人制作一个界面?

    如果您有充分的理由制作空白界面,那可能没问题。但是请考虑一下,看看您是否可以在该界面中放入元素之间通用的任何内容。

    【讨论】:

    • ... 同时,我不会为了界面而将额外的信息强加到界面中。定义越松散,接口越好。您总是可以使用多个接口来承担额外的功能义务。
    • 我不会为每个接口创建一个接口,只需要一个接口覆盖某个命名空间内的所有对象。而且,我的问题中的假设是它们之间确实没有共同点。
    【解决方案3】:

    我个人对接口的理解是,它构成了一个或多个对象之间的公共契约。这个想法很简单,您可以使用接口构建代码库而无需担心实现。话虽如此,这是一个有趣的问题,因为您在技术上试图强制执行合同。我会说继续。

    【讨论】:

      【解决方案4】:

      没什么...我猜是使用空白界面是错误的。只是,接口的意义在于定义一组通用的功能,这些功能的实现方式可能会有所不同。

      它不会让编码变得更容易,因为您实际上是在使用黑盒(object,有些人可能称之为)。

      不过,老实说,如果我要实现这样一个开放式架构,我只会使用常规的旧 object

      【讨论】:

        【解决方案5】:

        不,这不是糟糕的设计。对泛型参数提供合理的约束有助于维护代码的安全性和可读性。此外,您可以确定界面不会永远为空。

        【讨论】:

          【解决方案6】:

          你所说的被称为Marker Interfaces

          我过去曾成功使用过这种技术,但我会质疑您对泛型类施加的人为限制是否真的有必要。如果是这样,那么这肯定是一种快速且经过编译检查的方法来完成它。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-04-28
            • 1970-01-01
            • 1970-01-01
            • 2012-09-06
            • 2011-08-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多