我不想创建Actors
与World
. 我正在考虑使用以下两个代码片段之一。其中哪一个被认为是更好的设计?更好的意思是,对于源代码维护者来说更具可读性,对于只是阅读代码的人来说更具可读性,对于未来的调整更加灵活,等等。
如果已经问过类似的问题,我很抱歉,但我真的不知道在 OOP 中这样的概念是什么。
选项 A:
// declaration:
class World {
public:
RegisterActor(Actor* a);
};
class Actor {
public:
Actor(World& w) {
w.RegisterActor(this);
}
foo();
};
// usage:
World myWorld;
Actor myActor(myWorld);
myActor.foo();
选项 B:
// delcaration:
class Actor;
class World {
public:
Actor& CreateActor();
}
class Actor {
friend class World;
public:
foo();
private:
Actor();
};
// usage:
World myWorld;
Actor& myActor = myWorld.CreateActor();
myActor.foo();