如何解决设计应用程序类并访问它的子类
我正在编写一个 App 类,它合并了形成控制台应用程序并使控制台应用程序工作的各种元素。这些元素是诸如 Window、Console、Cursor、InputHandler 之类的类,它们具有对它们所代表的内容进行操作的方法。 我在三种设计之间进行选择时遇到了麻烦:第一个是有一个 App 类,它的成员是私有的,它有自己的公共方法,用于访问成员的相关方法。 例如:
class App
{
public:
App();
void setWindowPos(...);
void setWindowSize(...);
Coords getWindowPos();
Coords getWindowSize();
void setConsoleBufferSize(...);
Coords getConsoleBufferSize(...);
// etc..
private:
Window window;
Console console;
Cursor cursor;
InputHandler input_handler;
// etc
};
class Window
{
public:
Window();
void setPos(...);
void setSize(...);
Coords getPos();
// etc
};
这将导致具有相同实用程序的多个函数的定义只是为了访问执行该操作的函数,特别是如果这些成员又具有其他私有成员,您希望从 App 类访问哪些方法(例如. 调用 App::setWindowPos() 而后者调用 Window::setPos() 而不是直接调用后者。
第二种设计是您拥有代表应用程序公共各种元素的 App 成员,以便您可以直接从 App 对象访问它们的方法。 例如:
class App
{
public:
App();
// etc..
public:
Window window;
Console console;
Cursor cursor;
InputHandler input_handler;
// etc
};
class Window
{
public:
Window();
void setPos(...);
void setSize(...);
Coords getPos();
// etc
};
第三种设计是将 App 成员设为私有,但具有返回对这些私有 App 元素的引用的 getter 方法。
哪种设计更合理?
注意:我希望 Window、Console、Cursor 等各种类可以单独使用,也可以在 App 类之外使用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。