Devo seguire rigorosamente gli schemi?

3

Ho un servizio che è un client API.

L'obiettivo è creare un'istanza di un cliente concreto che gli dici (diversi fornitori), implementare i suoi metodi ( createRequest e doRequest ) e inoltrare la chiamata al client concreto, quindi è un proxy . Ma ha anche bisogno di mantenere la risposta dei client a un database in modo trasparente (così, lo sviluppatore non deve preoccuparsi di questo quando usa il servizio).

In questo modo, sto mixando 2 pattern (proxy e factory per i clienti concreti) e aggiungendo anche la responsabilità di persistenza al servizio.

Oggi il mio capo mi ha detto che se non seguo rigorosamente il modello, allora sto facendo qualcos'altro, ma non posso dire che sia X pattern.

È vero? Devo seguire rigorosamente i modelli?

Forse potrei separare l'istanziazione di clienti concreti in una fabbrica che segue un modello di fabbrica, ma poi aggiungerei più file per qualcosa che dovrei mantenere semplice e stupido, quindi temo che fare una fabbrica sarebbe finita -Engineering.

public function setClient(string $clientName) {
    if (!isset($this->clients[$clientName])) {
        throw new InvalidClientException('some error');
    }
    $this->clientInstance = new $this->clients[$clientName]();
}
    
posta JorgeeFG 15.12.2016 - 03:13
fonte

1 risposta

8

Ciò che penso che dovresti fare è risolvere i problemi scrivendo il codice.

Nel corso del tempo, raccoglierai abbastanza esperienza di sviluppo del software in modo che, quando risolvi un problema scrivendo il codice, riconoscerai quando un particolare modello risolve quel problema specifico, e puoi implementarlo usando il modello, con piena conoscenza dei benefici, dei costi e dei compromessi coinvolti.

Troppo spesso, gli sviluppatori di software al giorno d'oggi considerano i pattern come "elementi costitutivi" e cercano di assemblare programmi cucendo insieme modelli di software come una trapunta. Se questo è il modo in cui scrivi i programmi, allora stai sbagliando. I pattern software non sono elementi costitutivi, né forniscono informazioni esaurienti sui progetti di software. Piuttosto, sono una raccolta finita di soluzioni ben note a determinati problemi software noti. Li usi quando riconosci il modello nel problema, ma non prima.

Per dirla in un altro modo: se devi chiedere "quale martello dovrei usare per riparare questo tetto", allora non ne sai abbastanza per riparare il tetto.

Should I strictly follow patterns?

Dipende. rigorosamente seguendo lo schema in modo efficace soddisfa i tuoi requisiti specifici?

Nota che il tuo capo in realtà non ha detto "Devi seguire rigorosamente il modello". Quello che ha detto è stato: "Se non segui rigorosamente il modello, allora non puoi chiamarlo così "

    
risposta data 15.12.2016 - 03:26
fonte

Leggi altre domande sui tag