Dobrý den,
zkusím konkretizovat dotaz, minulé vlákno se zvrtlo.
Chci udělat třídu, kterážto bude figurovat jakožto komplexní server. Rozhodl jsem se architekturu vytvořit následovně:
class ServerListener
-má jediný primární úkol: naslouchat na jediném zvoleném portu a vyvolávat eventu NewConnectionEvent(Socket socket) při nové připojení
class ServerKeepAlive
-má jediný primární úkol: udržovat připojení k připojením v její kolekci Socketů. Bude vyvolávat hlavně událost ConnectionLostEvent(Socket socket)
class ServerMessages
-vyvolá eventu NewIncomeMessage(Socket socket, String message) přišla-li nová zpráva ze socketů v kolekci
-A ZDE JE DŮLEŽITÁ VĚC: metodu, kterážto bude jakoby slotem pro odeslání zprávy, bude aktivována jakžto reakce na vnější událost. (například kliknutím na tlačítko Sendmsg v GUI), bude mít tvar SendMessage(Socket socket, String message)
Bohužel, nebím jak to programu ELEGANTNĚ napasovat. Ne že bych si s tím neporadil, ale: v javě nejsou eventy a dělat to přes interfacy implementací NV Observer vede k nepořádku, protože když implementuju interface IObjectXYListener, který má třeba 15 událostí, a já potřebuji ve své třídě reagovat jen na jednu, budu tam mít 14 zbytečných nevyplněných metod a je to čuňárna. Rovněž mi vadí, že nemůžu vytvořit v jednom souboru s class rovněž také public interface. Z logického hlediska, jedná se o interface spjatý z tou třídou, proč to teda nemůžu mít v jediném souboru jako public, ale musím to dávat zvlášť. Příjde mi to strašně neohrabané a vůbec z toho nemám odbrý pocit.
Tak nemáte nějkdo tip na lepší strukturu?