如何尊重原始参数的开/关原则?
Posted
技术标签:
【中文标题】如何尊重原始参数的开/关原则?【英文标题】: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 也是如此),这是反模式,我们应该尽可能避免更改界面。 【参考方案1】:当您想将多个相关参数组合成有意义的表示时,最好使用对象作为参数。
在我看来,对整数、字符串等原始类型这样做是多余的,并且不会给您带来任何好处,如果它实际上不会导致每次调用的包装/解包开销。
您还可以看到许多代表Repository
的接口,其中总是有像GetAuthor(int id)
这样的方法,用于通过各自的ID 从数据库中获取元素。
【讨论】:
以上是关于如何尊重原始参数的开/关原则?的主要内容,如果未能解决你的问题,请参考以下文章