Design patterns 如何尊重原始参数的开/关原则?
为了遵守开闭原则,添加参数对象而不是原语是一种好的模式 假设我有这个接口Design patterns 如何尊重原始参数的开/关原则?,design-patterns,open-closed-principle,Design Patterns,Open Closed Principle,为了遵守开闭原则,添加参数对象而不是原语是一种好的模式 假设我有这个接口 public interface IBar{ void DoSomething(int id); } 如果有一天我需要添加一个参数,我将不得不更改我的接口。 使用此解决方案 public interface IBar{ void DoSomething(DoSomethingParameter parameters); } 我可以在不接触接口的情况下添加所需的任意多个参数,并且可以使用新参数创建新的IBar实现
public interface IBar{
void DoSomething(int id);
}
如果有一天我需要添加一个参数,我将不得不更改我的接口。
使用此解决方案
public interface IBar{
void DoSomething(DoSomethingParameter parameters);
}
我可以在不接触接口的情况下添加所需的任意多个参数,并且可以使用新参数创建新的IBar实现
这是反模式吗 当您想要将多个相关参数组合成有意义的表示时,最好使用对象作为参数 在我看来,这样做的基本类型,如整数,字符串。。。etc我是多余的,不会给你任何好处,如果它实际上不会造成每次通话的包装/拆封开销的话
此外,您还可以看到许多表示a
存储库的接口,其中总有一些方法,如GetAuthor(int-id)
,用于通过各自的id从数据库中获取元素 当您想要将多个相关参数组合成有意义的表示时,最好使用对象作为参数
在我看来,这样做的基本类型,如整数,字符串。。。etc我是多余的,不会给你任何好处,如果它实际上不会造成每次通话的包装/拆封开销的话
此外,您还可以看到许多表示a存储库的接口,其中总有一些方法,如GetAuthor(int-id)
,用于通过各自的id从数据库中获取元素 我真的不明白你的问题是什么,但既然一个好的设计对扩展开放,但对修改关闭,而且你显然修改了现有的接口(更不用说你还需要修改所有实现IBar的类),那么它就是反模式的,我们应该尽可能避免更改接口。我不太明白你的问题是什么,但既然一个好的设计是开放的,可以扩展,但可以修改,而且你显然修改了现有的接口(更不用说你还需要更改所有实现IBar的类),那么它就是反模式的,我们应该尽可能避免更改接口。