Ik zat me te vervelen en ik dacht: "Laat ik eens een IRC bot maken in Java". Nu weet ik dat er daar vast al 1000'en van zijn, maar daar gaat het niet om.
Ik loop tegen het twee problemen aan:
Eerste probleem
Mijn IRCConnection class is een subclass van TCPConnection die de sockets enzo beheert, als er nu een regel data binnenkomt moet ik de Client (Bot) vertellen dat er een message is binnengekomen. In VB (COM eigenlijk) zou ik dit doen met een Event, die bestaan niet in Java (althans, niet zoals in VB voor zover ik weet).
Nu had ik bedacht om de Client dan een Interface te laten implementeren (IRCClient) en dan de IRCConnection een reference te geven naar die IRCClient en daar dan mooie methods op aan te roepen. Klinkt mooi, maar zijn er nog andere (lees: betere) manieren om hetzelfde te doen?
Tweede probleem
Ik dacht: laat ik eens lekker object georienteerd gaan doen en de IRC commands als classes implementeren, dan krijg je zoiets:
Ik vind dat dat er best wel leuk uitzien, alleen is het niet veel handiger om gewoon zo te doen:
Ik vind dit er wat minder mooi uitzien, maar is de "objectgeorienteerde" aanpak in dit geval niet behoorlijk overkill?
Ik loop tegen het twee problemen aan:
Eerste probleem
Mijn IRCConnection class is een subclass van TCPConnection die de sockets enzo beheert, als er nu een regel data binnenkomt moet ik de Client (Bot) vertellen dat er een message is binnengekomen. In VB (COM eigenlijk) zou ik dit doen met een Event, die bestaan niet in Java (althans, niet zoals in VB voor zover ik weet).
Nu had ik bedacht om de Client dan een Interface te laten implementeren (IRCClient) en dan de IRCConnection een reference te geven naar die IRCClient en daar dan mooie methods op aan te roepen. Klinkt mooi, maar zijn er nog andere (lees: betere) manieren om hetzelfde te doen?
Tweede probleem
Ik dacht: laat ik eens lekker object georienteerd gaan doen en de IRC commands als classes implementeren, dan krijg je zoiets:
code:
1
2
3
| sendCommand(new NICKCommand(nickname)); sendCommand(new USERCommand(nickname,realname)); sendCommand(new PRIVMSGCommand(target,text)); |
Ik vind dat dat er best wel leuk uitzien, alleen is het niet veel handiger om gewoon zo te doen:
code:
1
2
3
| sendString("NICK " + nickname);
sendString("USER " + nickname + " blah blah :" + realname);
sendString("PRIVMSG " + target + " :" + text) |
Ik vind dit er wat minder mooi uitzien, maar is de "objectgeorienteerde" aanpak in dit geval niet behoorlijk overkill?
edit:
Die ***Command classes zijn natuurlijk allemaal een subclass van IRCCommand en ze doen niets meer dan de argumenten in een string zetten en die bij .toString() weer uitspugen zodat de TCPConnection de commands als text kan verzenden. Ze verzenden zelf dus helemaal niets.
Die ***Command classes zijn natuurlijk allemaal een subclass van IRCCommand en ze doen niets meer dan de argumenten in een string zetten en die bij .toString() weer uitspugen zodat de TCPConnection de commands als text kan verzenden. Ze verzenden zelf dus helemaal niets.
- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!