N`Kr1pt
Legacy Member
ik heb hier iets kleins geschreven om wat te spelen met design patterns.
momenteel ben ik bezig met het Strategy Pattern.
In de code staat volgend stukje if-else testen dat volgens mij een perfecte kandidaat is voor strategy pattern:
de bedoeling is dus een ander soort query uit te voeren afhankelijk van de parameter die meegegeven wordt.
wat houdt het Strategy Pattern in?
By employing the Strategy pattern, you encapsulate the concept that varies, and program to an interface, not an implementation.
Nu heb ik wat zitten denken, maar ik kom er niet helemaal uit.
- The concept that varies lijkt me hier duidelijk de query te zijn (insertMP3Query, insertEBookQuery, insertVideoQuery...)
- program to an interface: we gaan dus een QueryInterface voorzien
ik had dus gedacht aan een QueryInterface, een AbstractQuery class die QueryInterface implementeert, en dan wat subclasses van AbstractQuery (MP3Query, EBookQuery, VideoQuery) die AbstractQuery dus extenden.
Maar hoe elimineer ik die if-else structuur dan, wat uiteindelijk toch de bedoeling is?
wat ik nu heb:
momenteel ben ik bezig met het Strategy Pattern.
In de code staat volgend stukje if-else testen dat volgens mij een perfecte kandidaat is voor strategy pattern:
Code:
if (arg.equals("/EBooks"))
qry.InsertEbook(aFile);
else if (arg.equals("/MP3"))
qry.insertMP3(aFile);
else if (arg.equals("/Video"))
qry.insertVideo(aFile);
de bedoeling is dus een ander soort query uit te voeren afhankelijk van de parameter die meegegeven wordt.
wat houdt het Strategy Pattern in?
By employing the Strategy pattern, you encapsulate the concept that varies, and program to an interface, not an implementation.
Nu heb ik wat zitten denken, maar ik kom er niet helemaal uit.
- The concept that varies lijkt me hier duidelijk de query te zijn (insertMP3Query, insertEBookQuery, insertVideoQuery...)
- program to an interface: we gaan dus een QueryInterface voorzien
ik had dus gedacht aan een QueryInterface, een AbstractQuery class die QueryInterface implementeert, en dan wat subclasses van AbstractQuery (MP3Query, EBookQuery, VideoQuery) die AbstractQuery dus extenden.
Maar hoe elimineer ik die if-else structuur dan, wat uiteindelijk toch de bedoeling is?
wat ik nu heb:
Code:
QueryInterface
---------------
import java.sql.ResultSet;
public interface QueryInterface {
void insert();
void remove();
ResultSet select();
}
Code:
AbstractQuery
---------------
import java.sql.ResultSet;
public class AbstractQuery implements QueryInterface {
public void insert() {
}
public void remove() {
}
public ResultSet select() {
return null;
}
}
Code:
MP3Query
---------------
public class MP3Query extends AbstractQuery {
public void insert() {
String qryString = "insert into mp3 values('0','1',\"someone\",\"title\",\"size\",\"genre\");";
}
}
