私のクラスでは、いくつかの Main クラスと共有クラスを持つプロジェクトを作成します。という 1 つの特定のメイン クラスで、Log.txt というファイルを直接処理するUserApp
クラス のオブジェクトを作成します。UserInterface
DataStorage
の中にクラスのオブジェクトを作成しますUserApp
。これを使用して、String 値を に返すメソッドを呼び出します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 設計に実際に適しているのはどの方法ですか?
編集: 2 番目の部分は、実際には UserInterface オブジェクトをパラメーターとして渡します。これは、毎回オブジェクトを作成するよりも理にかなっているようです。それthis
を行うためのより良い方法でしょうか?