design-patterns - 是否有任何理由为非常基本的数据对象提供接口(interface)?

标签 design-patterns language-agnostic oop

在编写当前项目时,我已经为所有对象创建了接口(interface)。我认为这被认为是良好的编码习惯。

我基本上已经得到了一堆接口(interface),这些接口(interface)定义了非常简单的类。

例如:

public interface IUser
{
    int Id { get; }
    string DisplayName { get; }
}

我真的不认为把这些放在这里有什么意义。我现在在几个地方遇到了问题,在这些地方我想做一些事情,比如定义运算符重载,这是我在接口(interface)级别做不到的。

我很想通过我的项目并删除所有这些接口(interface)(我会为我的存储库和其他定义更复杂行为的此类东西保留接口(interface)),但我有点胆怯要删除 100s代码行数以及随之而来的所有重构。

我想在这里听听其他用户的意见。在基本对象上定义接口(interface)有什么目的吗?把它们放在那里有什么坏处,即使它们不是真的必要吗?

最佳答案

如果接口(interface)没有增加值(value),则将其删除。当谈到实体上的接口(interface)时,除非它们有共同点,否则我认为将它们放在接口(interface)后面不会增加任何值(value)。

如果它们确实有共同点,这将允许您使用通用算法来处理它们。

我经常看到“实体”扩展包含审计信息的基类。

interface IAuditBase{
    int Id { get; }
    string UpdateDate{ get; }
    //etc.
}

关于design-patterns - 是否有任何理由为非常基本的数据对象提供接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3494125/

相关文章:

c# - 在不违反开闭原则的情况下重构工厂

java - 使用自定义函数从多个源java 8构造对象

language-agnostic - 良好的面向对象设计实践的任何来源?

python - 如何将某物称为对象而不是列表?

php - PHP 是面向对象的吗?

design-patterns - 在客户端-服务器架构中使用 MVC( Model View Controller )

Javascript 共享具有独特状态的通用回调

perl - 如果全局变量不会改变,是否应该将它们作为参数传递给子程序?

language-agnostic - 在任何情况下我都想在递归上使用显式堆栈吗?

c++ - 一般来说,如何在 C++ 中的结构体和类之间进行选择