Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 如何尊重原始参数的开/关原则?_Design Patterns_Open Closed Principle - Fatal编程技术网

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的类),那么它就是反模式的,我们应该尽可能避免更改接口。