【问题标题】:How to respect the open/close principle with primitive parameters?如何尊重原始参数的开/关原则?
【发布时间】:2013-11-05 12:30:22
【问题描述】:

为了尊重开闭原则,添加参数对象而不是原始模式是一种好的模式吗?

假设我有这个界面

public interface IBar{
  void DoSomething(int id);
}

如果有一天我需要添加一个参数,我将不得不改变我的界面。 有了这个解决方案

public interface IBar{
  void DoSomething(DoSomethingParameter parameters);
}

我可以在不接触界面的情况下添加任意数量的参数,并且我将能够使用新参数创建 IBar 的新实现。

这是一种反模式吗?

【问题讨论】:

  • 不太明白你的问题是什么,但是因为一个好的设计是对扩展开放但对修改关闭的,你显然修改了现有的接口(更不用说你需要更改所有实现的类IBar 也是如此),这是反模式,我们应该尽可能避免更改界面。

标签: design-patterns open-closed-principle


【解决方案1】:

当您想将多个相关参数组合成有意义的表示时,最好使用对象作为参数。

在我看来,对整数、字符串等原始类型这样做是多余的,并且不会给您带来任何好处,如果它实际上不会导致每次调用的包装/解包开销。

您还可以看到许多代表Repository 的接口,其中总是有像GetAuthor(int id) 这样的方法,用于通过各自的ID 从数据库中获取元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多