|
|
1
2
既然您有一组需要一起工作的类,那么您应该考虑 怎样 他们应该一起工作。如果它是通过访问函数或朋友来实现的,那么您将紧密耦合这些类。将来很难去上一个做了不同事情的新班级。测试这些类也很困难,因为它们都是相互依赖的。 考虑创建一个接口类,定义类应该如何通信。除非涉及到一些特殊的特权,否则这个接口还将定义其他人如何与他们通信。这样,就打破了类之间的相互依赖关系。以后的任何更改都将本地化为所涉及的类。没有人需要改变(或者重新编译)。 |
|
|
2
4
我一直认为这条规则是错误的。大多数班级都有几个责任,而且没有造成任何伤害。考虑一个银行账户类别-它可能有责任:
当然,这些职责可能会使用帐户所包含的其他类来实现。 |
|
|
3
3
如果你 必须 将私有数据从一个类公开给另一个类,而不是使第二个类成为朋友。为您的私有数据创建一个访问器会首先破坏使其私有化的目的。单一责任主体与此无关。 编辑 为了回应下面迪玛的评论,也许我说“目的”有点过分了。毕竟,使数据成员私有化的原因不止一个。Dima指出,其中一个原因是保护对象的完整性。访问器可以做到这一点。 但第二个原因(在我看来更重要)是隐藏类的实现细节。一旦添加了公共访问器,就无法控制有多少其他类引用了类的实现细节。随着时间的推移,由于对其他类的级联影响,这会使修改实现变得非常困难。 朋友类虽然远不是完美的,但至少可以让您严格控制有多少类会受到您的更改的影响。另一个好处是,当您进行更改时,您确切地知道哪些类可能会受到影响。因此,当您必须共享类的内部构件时,它们是更好的选择。但最好的选择是(当然)根本不公开实现细节。 |
|
|
4
1
您还可以选择4:添加更多的类来表示类之间的不同角色/交互。 这至少更符合德米特定律。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |