Questa è una domanda puramente di design.
Voglio portare a Java un bel gioco educativo "Bug Brain". In questo gioco si progettano reti neurali composte da tre elementi: neuroni, nodi e sinapsi. Neuron è usato per eseguire un qualche tipo di elaborazione sui suoi segnali di ingresso per produrre l'output desiderato; può essere collegato ad altri neuroni / nodi (le connessioni sono unidirezionali e ponderate). Possiamo pensare ai nodi come alle giunzioni - possono anche essere collegati ad altri neuroni / nodi (e queste connessioni sono anche unidirezionali e ponderate), ma il peso di noi non può cambiare il peso delle connessioni di input. Synapse è una connessione tra questi due elementi. Per riassumere: i neuroni e i nodi hanno sia input che output (ad altri neuroni / nodi) e fanno alcuni input > l'elaborazione degli output.
D: Ora, come progetteresti questa struttura di classe? Questo è uno schizzo che ho "prodotto" finora: screenshot del design
Poiché l'operazione "connetti due join (es. neurone / nodo)" ha tre responsabilità (aggiungi synapse, aggiungi output a join A, aggiungi input a join B) Ho deciso di metterlo come methid statico in un controller classe. Ovviamente potrei evitare queste relazioni bidirezionali tra gli elementi: non devo tenere traccia delle uscite, solo degli input ma ci sono altri limiti, ad es. ci possono essere solo 8 I / O per join, quindi dovrei ripetere tutte le sinapsi ogni volta che aggiungo una connessione per vedere se c'è ancora un posto dove aggiungerla. In questo caso (questo gioco) non avrai troppe connessioni in modo da non colpire le prestazioni, ma mi piacerebbe sapere come affrontare tali situazioni in generale.
Poiché è il fondamento di tutta questa logica di questo progetto mi piacerebbe averlo fatto correttamente. Tutti i suggerimenti sono benvenuti;)