Separera GUI och LOGIK i Java
Postat: 11 jan 2009, 22:04
Nu har jag börjat förstå värdet av att separera GUI från hanteringen av det logiska, men jag vet inte vilket av följande alternativ som är bäst, och kanske det finns ytterligare några som jag inte tänkt på. Språket är Java. Jag gick från Delphi till NetBeans GUI-builder och nu behöver jag lära mig att tänka i lite nya banor.
Alternativ 1:
Koppla varje unik händelse för ett unikt objekt i GUI:t till en egen funktion i logiken.
Alternativ 2:
Koppla alla händelser till en funktion i logiken som testar vad som hände, och sedan utför lämplig åtgärd.
Alternativ 3:
Koppla alla typer av händelser för en viss klass, exv, allt som har med meny att göra kopplas till logiken testgrupp för meny. Där testas det vilket händelse det var för vilket objekt. En annan grupp kan vara knappar.
Alternativ 4:
Koppla händelser av en viss typ exv, mousedown till logikens mousedown, alla mouseup till mouseup.
I min automatgenererade kod som jag för hand delat upp i GUI och LOGIK har jag fixat till så att följande används
miHelpAbout är en JMenuItem för menyn "Hjälp/Om".
Det kan utlösas av antingen F12, eller genom att menyn väljs.
Det verkar vara enligt Alternativ 1.
Jag tycker att det blir för kladdigt så här, har jag fel?
Rent spontat skulle jag föredra Alternativ 3.
Alternativ 1:
Koppla varje unik händelse för ett unikt objekt i GUI:t till en egen funktion i logiken.
Alternativ 2:
Koppla alla händelser till en funktion i logiken som testar vad som hände, och sedan utför lämplig åtgärd.
Alternativ 3:
Koppla alla typer av händelser för en viss klass, exv, allt som har med meny att göra kopplas till logiken testgrupp för meny. Där testas det vilket händelse det var för vilket objekt. En annan grupp kan vara knappar.
Alternativ 4:
Koppla händelser av en viss typ exv, mousedown till logikens mousedown, alla mouseup till mouseup.
I min automatgenererade kod som jag för hand delat upp i GUI och LOGIK har jag fixat till så att följande används
Kod: Markera allt
miHelpAbout.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
_LOGIC_.menuAbout(evt);
}
});
Det kan utlösas av antingen F12, eller genom att menyn väljs.
Det verkar vara enligt Alternativ 1.
Jag tycker att det blir för kladdigt så här, har jag fel?
Rent spontat skulle jag föredra Alternativ 3.