也許標題令人困惑,所以這里是我試圖避免的片段:
public class Generator{
private static GUI userInterface;
public static boolean specialValidator(String specialEntryText)
{
if(entryValidator(specialEntryText))
{
int specialChars = Integer.parseInt(specialEntryText);
int maxPossible = Integer.parseInt(userInterface.getLength())-3;
if(specialChars < 1 || specialChars > maxPossible)
{
return false;
}
return true;
}
return false;
}
public static void main(String[] args) {
userInterface = new GUI();
}
}
我的程式按預期運行和運行(請記住,還有比這更多的功能),但我不知道我在這里所做的是否被認為是不好的做法,或者這樣做的缺點是什么。如果我的main方法不在Generator課堂上,這將不起作用,這對我來說似乎是個問題。
另外,我在這里所做的事情也有一個特定的名稱嗎?
uj5u.com熱心網友回復:
main方法是程式的入口點,需要在一個類中。它不需要在Generator課堂上。
只要可以訪問要使用的類,就可以從另一個類呼叫它。在你的情況下,public它應該沒問題。
如果它在另一個班級,它可能是這樣的
package yourPackage;
public class Main {
public static void main (String[] args) {
Generator gen = new Generator ();
//
gen.specialValidator(..);
}
}
uj5u.com熱心網友回復:
很多事情都讓我眼前一亮。
似乎依賴GUI于specialValidator哪個產生“緊密耦合”——沒有GUI.
這對我來說似乎沒有意義。您希望通過將所有必需的資訊直接傳遞到方法中來專注于減少這種耦合/依賴性,例如...
public class Generator {
public static boolean specialValidator(String specialEntryText, int length) {
if (entryValidator(specialEntryText)) {
int specialChars = Integer.parseInt(specialEntryText);
// Any resason we're not using the specialEntryText length?
int maxPossible = length - 3;
if (specialChars < 1 || specialChars > maxPossible) {
return false;
}
return true;
}
return false;
}
}
現在specialValidator不關心“如何”生成資訊,只關心資訊是否可用。這“解耦”了方法并使其更加獨立,這意味著您可以隨心所欲地呼叫它(它還支持“依賴注入”使其更易于測驗??)
現在你可以隨心所欲地稱呼它,例如......
public class Main {
public static void main(String[] args) {
Generator.specialValidator("some text", 8);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/328710.html
上一篇:物件陣列
