我通常使用C编程语言。在OO编程中,对我来说不方便。我希望对象中成员的可见性依赖于函数的要求。说,
class Aclass{
int i;
float x;
} A;
功能
float f(Aclass &A) {
cout<<"A.x="<< x <<endl;
}
我希望实际上只有x对f可见。
但是对于功能
float I(Aclass &A) {
cout<<"A.i="<< A.i <<endl;
}
我只希望我能看到我。
在更现实的情况下,一个对象有很多成员。如何让不同功能的成员看到不同的部分?
答案 0 :(得分:2)
在更现实的情况下,一个对象有很多成员。
听起来这个对象需要分解成多个对象。
如何让不同功能的成员可以看到不同的成员?
通过将功能重构为单独的对象。如果一个对象做了很多事情,你发现很难将该对象的一个责任与另一个对象隔离开来,那么该对象正在做太多事情。
一般来说,赞成许多小而简单的物体而不是几个大而复杂的物体。保持关注点分离,依赖关系孤立。你所描述的是一个不能正确区分问题的典型例子。如果函数A()
不应该知道成员i
那么它们是两个不属于同一个对象的独立问题。
查看S.O.L.I.D. Principles有关隔离依赖关系和分离关注点的一般指导原则。