【问题标题】:Is it ok to initialize all classes inside the Main class?可以初始化 Main 类中的所有类吗?
【发布时间】:2020-09-15 17:07:25
【问题描述】:

最近我开始着手我的第一个更大的项目之一,我注意到越来越多的课程开始堆积起来 我以前从来没有超过 3 到 4 个类,我想知道初始化所有类并在 Main 类中为这些类的每个实例创建 getter 是否存在某种缺点。

DatabaseClass db;
Commands cmds;
Configuration configuration;
public Configuration getConfiguration() { return configuration; }
public Commands getCommandsClass() { return cmds; }
public DatabaseClass getDatabaseClass() { return db; }
//Inside of some sort of method
    db = new DatabaseClass(this);
    cmds = new Commands(this);
    events = new Configuration(this);

然后我在某种方法中创建新对象。 这是一个错误的方法吗? 有没有更好的方法来处理这个? 提前谢谢!

【问题讨论】:

  • 你正在创建一个上帝对象。
  • 跟进 Johannes 上面提到的内容:en.wikipedia.org/wiki/God_object
  • 这绝对有用,因为我以前从未听说过“上帝对象”的概念,很多东西要学

标签: java class initialization main


【解决方案1】:

尝试遵循层次结构,以职责为指导。

主类将负责初始化应用程序的高级对象,但您应该将每个对象保留在具有初始化和操作知识的类中。

这是一个深奥的话题,但绝对是一个可行的技能。 寻找 GRASP 模式作为指南(GRASP 代表一般责任分配软件原则/模式),上面有一个很好的维基百科条目。

【讨论】:

  • 谢谢您,先生,似乎来自维基百科的 Creator Pattern 条目帮助我理解了我应该在何时何地初始化这些对象。我会为将来可能偶然发现此线程的人留下一个链接。 en.wikipedia.org/wiki/GRASP_(object-oriented_design)
【解决方案2】:

您正在做的是声明对象的最基本方式,这肯定会导致将来出现问题。一个问题是,它无法测试。

Q:初始化Main类里面的所有类可以吗?

答:简短的回答是“否”。

那我们在哪里初始化它们呢?

这取决于您的项目要求和您应用的设计模式类型。

你可以看看:https://www.javatpoint.com/design-patterns-in-java

【讨论】:

  • 感谢您的回复和指南链接,我正在寻求改进,这正是我所需要的。
猜你喜欢
  • 2022-01-05
  • 1970-01-01
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
  • 1970-01-01
相关资源
最近更新 更多