2012-02-23 17 views
5

Sono stato un programmatore Python da 7 anni e sto progettando con PyQt da oltre 3 anni ... Ma non sono un Comp Sci classico. maggiore. Più recentemente ho imparato Go e ho seguito attivamente lo Golang-nuts discussion list che è pieno di sviluppatori estremamente intelligenti. Da questo gruppo di discussione, ho visto molti riferimenti a modelli di progettazione del software, come Observer, Reactor, ecc. Anche perché non sono un CS maggiore, non ho mai veramente imparato tutta questa terminologia e teoria, ma mi ha fatto chiedere ...Quali modelli di progettazione software presentano i framework GUI comuni?

Quali schemi di progettazione fanno i comuni framework GUI come Qt, wx, GTK?

Ho la sensazione che sia una miscela di pattern per componenti diversi, come il loop di eventi vs segnale/slot o binding vs Key-value observing, e così via. Mi piacerebbe sentire una spiegazione o generalizzazione su come questi schemi software si adattino ai componenti tradizionali di questi framework.

Come un elemento secondario a questa domanda: Esistono framework GUI che tentano di adottare un approccio di pattern completamente diverso a una soluzione GUI? Cocoa/objective-c usa gli stessi pattern di ciclo degli eventi di questi altri?

Aggiornamento
Per aiutare a restringere il focus della mia domanda, e sulla base della risposta da @HDDimon, sto principalmente chiedo su modelli di comportamento (comunicazione):
http://en.wikipedia.org/wiki/Design_Patterns#Behavioral_patterns

risposta

5

Buona giornata. Penso che la migliore risposta che troverà nell'articolo di Martin Fowler GUI Architectures.

da questo articolo:

Model View Controller Probabilmente il modello più ampia citato in sviluppo dell'interfaccia utente è Model View Controller (MVC) - è anche il più citato erroneamente. Ho perso il conto delle volte che ho visto qualcosa descritto come MVC che si è rivelato essere niente di simile. Francamente un sacco di ragioni per questo è che le parti del classico MVC non hanno davvero senso per i ricchi clienti al giorno d'oggi. Ma per il momento daremo uno sguardo alle sue origini.

Al centro di MVC, e l'idea che è stato il più influente ai quadri più tardi, è ciò che chiamo Presentazione Separato. L'idea dietro Presentazione Separata è a crea una chiara divisione tra oggetti di dominio che modellano la nostra percezione del mondo reale, e oggetti di presentazione che sono gli elementi della GUI che vediamo sullo schermo . Gli oggetti di dominio dovrebbero essere completamente autonomi e funzionare senza riferimento alla presentazione, dovrebbero anche essere in grado di supportare presentazioni multiple, possibilmente contemporaneamente. Questo approccio era anche una parte importante della cultura Unix, e continua ancora oggi consentendo a molte applicazioni di essere manipolate sia tramite l'interfaccia grafica della linea di comando sia tramite la riga di comando.

In base a questo articolo, i migliori tipi di modelli per la divisione tra qualsiasi tipo di componenti sono Modelli strutturali.

da "Design Patterns: Elements of Reusable Object-Oriented Software" da "La banda dei quattro": Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. (Voglio davvero vi consigliamo di leggere questo libro impressionante)

  • Patterns struttura:
    • adattatore
    • Ponte
    • Composite
    • Decorator
    • Facciata
    • mosca
    • Proxy

Ma in ogni tipo di quadri è possibile vedere mix tra diversi tipi di modelli: modelli Creazionali, modelli strutturali, modelli comportamentali.

Avevo trovato un relational diagram between patterns dal libro Design Patterns, potrebbe essere utile per l'uso quotidiano.

UPD: Grande SO answer aggiunto.

+0

Grazie mille per queste informazioni. Sono molto familiare con MVC come piuttosto comune ad altri framework. Sicuramente controllerò le tue referenze. Ma speravo anche che qualcuno avrebbe focalizzato la loro risposta in modo più specifico sui popolari framework GUI e sui loro metodi di comunicazione. Il ciclo degli eventi, segnala slot, kvo, passaggio di messaggi/eventi, ecc. Potrei ovviamente leggere un libro su schemi generali di progettazione, ma volevo ascoltare esempi diretti e specifici di questi framework GUI. Qualche informazione in più? – jdi

0

Trovo Google Material Design una linea guida GUI perfetta, compresi i vincoli di progettazione e principi in linea con i modelli di struttura generale.

Trovate anche questi GUI Design Books, relativi ai modelli di comportamento e questo GUI Patterns Site utile.

+0

Grazie per la risposta, ma penso che questo sia il tipo sbagliato di schema in relazione alla mia domanda. Questi sono schemi di progettazione che sono più semplicemente descrizioni di stile UX. Stavo chiedendo di Comp Sci. Modelli di programmazione degli stili, come il pattern Observer. Non è un modello per crestare una casella di controllo e cosa significa interazione dell'utente – jdi

+0

Stavo cercando lo stesso tipo di informazioni quando ho trovato la tua domanda. Non ho ancora trovato nulla sulla strutturazione di un codice di progetto della GUI, qualcosa come i pattern della Gang of Four, ma in particolare per la GUI (tranne alcuni pattern). Hai trovato qualcosa di fondamentale sull'argomento? – Zon

+0

La risposta accettata è stata la migliore che ho ottenuto finora – jdi

Problemi correlati