gpt4 book ai didi

.net - 瘦接口(interface)和胖接口(interface)之间的 "Thin line"是什么?

转载 作者:行者123 更新时间:2023-12-05 00:36:45 24 4
gpt4 key购买 nike

我有一个预订系统,可让您预订、修改现有预订和取消现有预订。我正在研究接口(interface)隔离原则,我想知道我应该使我的接口(interface)有多薄,以及我是否违反了单一责任原则。我最初的设计是:

interface IReservation
{
void Book();
void Modify();
void Cancel();
}

但后来我想,如果一个预订系统不需要为预订实现这些方法之一,并且只关心预订,例如,我做了以下事情:
interface IBook
{
void Book();
}


interface IModify
{
void Modify();
}

interface ICancel
{
void Cancel();
}

现在我可以做这样的事情:
interface IReservation : IBooking
{


}

或者
interface IReservation : IBooking, IModify
{


}

所以问题就变成了我是不是把它像这样细化了。此外,为接口(interface)考虑名称变得更加困难,例如,我不喜欢 IModify 或 ICancel (它们对我来说就像应该在 IReservation 接口(interface)上的方法)。你如何确定什么应该进入一个接口(interface),什么应该被隔离到另一个接口(interface)、类等......

最佳答案

在查看接口(interface)的范围时,您必须考虑两件事:

  • 要求每个 IReservation 是否有意义?执行这些成员?
  • 引用成员 X 有意义吗?没有成员(member) Y ?

  • 第一个是您所涵盖的内容,并得出了“否”的结论。第二个同样重要。将某些东西视为“可以修改”而它不能做任何其他事情是否有意义?如果没有,请考虑制作 IReservationIModifiableReservation ,或其他一些功能分组。

    例如,看起来像 CancelModify携手并进,因此可能希望将它们放在 IModifiableReservation 上,然后让您的类实现该接口(interface)。

    正如你所拥有的,这似乎有点太细化了。

    关于.net - 瘦接口(interface)和胖接口(interface)之间的 "Thin line"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7855180/

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