Domanda

Nel mio progetto personale ho cercato di attenermi a MVC, ma sono stato anche reso consapevole che rimanere troppo stretto a MVC può essere una cosa negativa in quanto rende la scrittura imbarazzante e costringe il flusso del programma in modi strani (cioè alcuni semplici Le funzioni possono essere eseguite da qualcosa che normalmente non farebbe ed evitare le spese generali relative a MVC).

Quindi sto cominciando a sentirmi giustificato in questo compromesso:

Ho alcuni "programmi manager" che "possiedono" e ho qualche modo per manipolarli, in quanto tale penso che contano come Entrambi Parte del modello e parte del controllo, e per me questo sembra più naturale che mantenere separati. Ad esempio: uno dei miei manager è il PlayerChartacterManager che ha questi metodi:

void buySkill(PlayerCharacter playerCharacter, Skill skill);
void changeName();
void changeRole();
void restatCharacter();
void addCharacterToGame();
void createNewCharacter();
PlayerCharacter getPlayerCharacter();
List<PlayerCharacter> getPlayersCharacter(Player player);
List<PlayerCharacter> getAllCharacters();

Spero che i nomi di Mothod siano abbastanza trasparenti da non dover spiegare tutti.

L'ho chiamato un manager perché aiuterà a gestire tutto il "modello" del "modello" del Codice che il codice crea e a creare e mantenere una mappa di questi. Potrei anche farlo archiviare altre informazioni in futuro.

Ho intenzione di avere altre due classi simili per questo tipo di controllo, ma orchestrerò quando e come ciò accade e cosa fare con i dati restituiti tramite una classe di controller pura. Questo controllo di scissione tra manager informati e controller, invece di operare solo attraverso un controller sembra semplificare il mio codice e farlo fluire di più.

La mia domanda è: questa è una scelta pericolosa, in termini di rendere il codice più difficile da seguire/testare/correggere? È qualcosa di buono come buono o cattivo o neutrale? Non trovo nulla di simile tranne l'idea degli attori, ma non è proprio il motivo per cui sto cercando di fare.

Modificare: Forse è necessario un esempio; Sto usando il controller per aggiornare la vista e accedere ai dati, quindi quando faccio clic sul "Aggiungi nuovo personaggio a un pulsante Player", chiamerà i metodi nel controller che poi vanno a dire alla classe PlayerCharacterManager per creare un nuovo personaggio Innima, chiamerà la classe PlayerManager per aggiungere quel nuovo personaggio alla mappa del personaggio giocatore, quindi aggiungerà queste informazioni al database e dirà alla vista di aggiornare eventuali GUI effettuati. Questo è il tipo di "sequenza di controllo" che spero di creare con queste classi di manager.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top