在我的课堂上,我们将创建一个包含多个主类和共享类的项目。在一个名为 的特定主类中UserApp
,我创建了该类的一个对象UserInterface
,它直接处理一个名为 Log.txt 的文件。
DataStorage
我在 内部创建了一个类的对象,UserApp
我用它来调用一个方法,该方法将字符串值返回给UserApp
. 然后,我获取该字符串值并将其传递给UserInterface
将写入文件 Log.txt 的方法。例如:
public class UserApp {
public static void main(String[] args) {
UserInterface ui = new UserInterface();
String[] commands = ui.readCommandLine();
while(!ui.isFileEnd()){
switch(command[0]){
case "LI": ui.displayThis(dataStorage.listById());
break;
case "QI": ui.displayThis(dataStorage.queryById(command[0]));
}
}
}
}
public class DataStorage {
public String queryById(String id) {
// Stuff the method does goes here
return stringToReturn;
}
}
对我来说,这似乎是最 OOP 的做事方式。我给她发了电子邮件,问她这是否正确。她说在inui.displayThis
内部调用... 这意味着我需要在类中创建一个对象,或者将对象作为参数传递给. 如果我像她说的那样做,该方法不会返回字符串,而是无效的。例如:listById()
DataStorage
UserInterface
DataStorage
DataStorage
listById()
listById()
public class UserApp {
public static void main(String[] args) {
String[] commands = ui.readCommandLine();
while(!ui.isFileEnd()){
switch(command[0]){
case "LI": dataStorage.listById(); // Here is the difference
break;
case "QI": dataStorage.queryById(command[0]); // And here
}
}
}
}
public class DataStorage {
public void queryById(String id) {
UserInterface ui = new UserInterface();
// Stuff the method does goes here
ui.displayThis(stringToDisplay);
}
}
还有更多的 switch 语句和方法,但我觉得没有必要为这个问题展示它们。我对此进行了一些研究,根据我收集到的信息,我不确定这是一种风格偏好,或者一种方式是否比另一种更好。她希望我这样做的方式对 OOP 语言来说并不合适。哪种方法实际上对于 OOP 设计是正确的?
编辑:第二部分实际上是传入一个 UserInterface 对象作为参数。这似乎比每次都创建对象更有意义。会this
是更好的方法吗?