gpt4 book ai didi

c# - 为什么有些模式在 oo 设计中有带有单独数据类的类

转载 作者:行者123 更新时间:2023-11-30 21:12:33 26 4
gpt4 key购买 nike

我刚刚阅读了一些旧的 oo 设计书籍和一些我不太了解的东西。

如果我使用类似于存储库模式的东西,可以说。

即:

    interface ICarRepository {

IEnumerable<car> GetCarCollection();

}

class MsSqlCarRepository : ICarRepository {

IEnumerable<car> GetCarcollection(){ ................ };

}

class car {

int CarId;
string CarName;

}

上面的代码大致是 c# 但并不真正相关。

虽然上面的效果很好,而且是我自己经常看到和使用的,但我读过的所有关于 oo 的书通常都说一个对象将它的方法和属性组合在一起。

所以忽略接口(interface)部分不应该更像:

    class car {

int CarId;
string CarName;

IEnumerable<car> GetCarcollection(){ ................ };

}

????

最佳答案

这都是关于代码不同部分的层之间的耦合。将领域模型与可以在这些领域模型上执行的操作/契约分开,可以让您在其他上下文中更轻松地重用这些领域模型。想象一下,例如有人想用这个 Car 模型定义一些不同于 GetCarcollection 的操作。在这种情况下,他将编写一个不同的存储库接口(interface),您将不需要修改该域模型。另一方面,如果您在 Car 对象中定义了 GetCarcollection 方法,则该模型的其他使用者不会高兴,因为他可能不关心您的方法,而是想使用他自己的方法。

关于c# - 为什么有些模式在 oo 设计中有带有单独数据类的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7423689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com