Modelli di design e più linguaggi di programmazione

4

Mi riferisco qui agli schemi di progettazione trovati nel libro del GOF. Per prima cosa, come la vedo io, ci sono alcune peculiarità nel progettare pattern e nel conoscere più lingue, per esempio in Java hai davvero bisogno di un singleton ma in Python puoi fare a meno di scrivere un modulo, ho visto da qualche parte un wiki che prova a scrivere tutti i pattern GOF per JavaScript e tutte le voci erano vuote, immagino perché potrebbe essere un compito scoraggiante fare quell'adattamento.

Se c'è qualcuno che utilizza modelli di progettazione e sta programmando più lingue a supporto del paradigma OOP e può darmi un suggerimento su come dovrei approcciare i modelli di progettazione. Un approccio che potrebbe aiutarmi in tutte le lingue che uso (Java, JavaScript, Python, Ruby):

Posso scrivere una buona applicazione senza conoscere esattamente i modelli di progettazione GOF o potrei aver bisogno solo di alcuni di essi che potrebbero essere cruciali e se sì quale, ci sono alternative al GOF per lingue specifiche, e se un programmatore o un team fanno sono stati impostati i propri schemi di progettazione?

    
posta Eduard Florinescu 09.09.2012 - 09:58
fonte

1 risposta

10

La prima cosa da capire è che i modelli di progettazione non sono uno strumento di progettazione. Sono uno strumento di comunicazione . Puoi scrivere una buona applicazione senza conoscere i modelli di progettazione GOF? Assolutamente. Probabilmente troverai già degli schemi di progettazione, semplicemente non lo sai. Dopotutto, sono soluzioni comuni a problemi comuni. Ma puoi dire a un collega come fare qualcosa di meglio? Non facilmente.

La seconda cosa da capire è che alcuni schemi di progettazione sono così comuni che ora sono incorporati nella maggior parte delle lingue moderne. Ad esempio, non hai bisogno di un pattern Observer in C #, hai degli eventi (che sono il pattern Observer, ma non hai mai bisogno di dire ad uno sviluppatore C # "usa un Observer lì").

La terza cosa è che il libro dei modelli di progettazione GoF è stato scritto diverse versioni di Java molte lune fa ed era basato molto su linguaggi orientati alla classe. Javascript non è un linguaggio orientato alla classe, è un linguaggio orientato al prototipo e Python e Ruby sono entrambi dinamici. Quindi alcuni dei pattern GoF potrebbero essere irrilevanti per quelle lingue (ma alcune potrebbero non esserlo).

Molto più utili al giorno d'oggi sono gli schemi descritti in Patterns of Enterprise Application Architecture di Martin Fowler.

Tutto ciò detto, è utile capire i modelli GoF, se non altro per facilitare la comunicazione con altri sviluppatori che li capiscono. Il libro GoF è asciutto e difficile da capire a volte - è anche un interessante esercizio di pensiero, potrebbe suggerirti di vedere schemi comuni nell'applicazione della tua squadra e scrivi i tuoi pattern . Inoltre, non è molto preciso (quando parli della differenza tra Adapter, Proxy e Facade, ad esempio).

Ci sono alcuni buoni siti là fuori con descrizioni molto più chiare .

    
risposta data 09.09.2012 - 10:24
fonte