Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.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
C++ 单一责任原则与聚合_C++_Aggregation_Single Responsibility Principle - Fatal编程技术网

C++ 单一责任原则与聚合

C++ 单一责任原则与聚合,c++,aggregation,single-responsibility-principle,C++,Aggregation,Single Responsibility Principle,我知道单一责任原则规定一个班级应该只有一个责任或一个改变的理由。这是否意味着具有许多聚合成员变量的类违反了这一原则?我的意思是,当一个类将它的一些操作委托给它的聚合成员变量时,是否违反了SRP?或者这些聚合成员被认为只负责它们的操作,而包含它们的类与这些操作无关?关键不在于类中有多少。这就是我们班的工作。这是干什么用的。它的责任是什么。该类可能不会公开任何这些聚合成员。它可能只有一种方法。所有这些成员都需要做这一项工作。只要有一份工作,就不会违反单一责任原则 这就是说,在一项工作下,有可能过度扁

我知道单一责任原则规定一个班级应该只有一个责任或一个改变的理由。这是否意味着具有许多聚合成员变量的类违反了这一原则?我的意思是,当一个类将它的一些操作委托给它的聚合成员变量时,是否违反了SRP?或者这些聚合成员被认为只负责它们的操作,而包含它们的类与这些操作无关?

关键不在于类中有多少。这就是我们班的工作。这是干什么用的。它的责任是什么。该类可能不会公开任何这些聚合成员。它可能只有一种方法。所有这些成员都需要做这一项工作。只要有一份工作,就不会违反单一责任原则

这就是说,在一项工作下,有可能过度扁平化应该在其他职责下进行分组和抽象的事情。如果这些抽象职责的变化影响了我们的类,那么它们就没有被正确抽象


对一个对象的引用应该只向它的接口公开。而不是它的内部变化。

这个类在它里面有多少不是重点。这就是我们班的工作。这是干什么用的。它的责任是什么。该类可能不会公开任何这些聚合成员。它可能只有一种方法。所有这些成员都需要做这一项工作。只要有一份工作,就不会违反单一责任原则

这就是说,在一项工作下,有可能过度扁平化应该在其他职责下进行分组和抽象的事情。如果这些抽象职责的变化影响了我们的类,那么它们就没有被正确抽象


对一个对象的引用应该只向它的接口公开。不是因为它的内部变化。

一个具体的例子说明你所问的问题会很有用。假设你有一个视频游戏的playerCharacter类。在该类中,您拥有characterAi、characterAnimation和characterController的聚合成员。我只是想确认,即使playerCharacter类拥有所有这些聚合成员,但这本身并没有违反srp。这是真的。但是如果playerCharacter构建characterAi、characterAnimation和characterController并使用它们,那么你对playerCharacter的要求有点高。是的,我很好奇,因为在我看来,为了使主程序尽可能可读,类之间需要一些交互。如果你有很多独立的小类,我觉得这会降低main的可读性,因为你必须把所有这些类都带进来并连接它们。你可以有很多独立的小类,但仍然有一个相当干净的main。一种模式是构造所有在main中应该有一个实例的对象。将它们相互传递并构建对象图。如果时间长了,就开始抽象结构。然后在一个对象上调用一个方法来开始整个过程。一个具体的例子来说明你所问的问题会很有用。假设你有一个视频游戏的playerCharacter类。在该类中,您拥有characterAi、characterAnimation和characterController的聚合成员。我只是想确认,即使playerCharacter类拥有所有这些聚合成员,但这本身并没有违反srp。这是真的。但是如果playerCharacter构建characterAi、characterAnimation和characterController并使用它们,那么你对playerCharacter的要求有点高。是的,我很好奇,因为在我看来,为了使主程序尽可能可读,类之间需要一些交互。如果你有很多独立的小类,我觉得这会降低main的可读性,因为你必须把所有这些类都带进来并连接它们。你可以有很多独立的小类,但仍然有一个相当干净的main。一种模式是构造所有在main中应该有一个实例的对象。将它们相互传递并构建对象图。如果时间长了,就开始抽象结构。然后在一个对象上调用一个方法来启动整个过程。好的,这会让事情变得更清楚一点。非常感谢。好的,这会让事情澄清一点。非常感谢你。