Domanda

Io sono un grande fan del software principi di progettazione come SOLIDO e LAVAGGIO.Quali altri principi esiste per OO progettazione del software?

Nota.Io non sto cercando risposte come "commento il tuo codice", ma cerca invece OO principi di progettazione come quelli descritti da Zio Bob.

È stato utile?

Soluzione

Un elenco abbastanza completo da Wikipedia:

http://en.wikipedia.org/wiki/List_of_software_development_philosophies

  • Agile di sviluppo del software
  • Agile Unified Process (AUP)
  • Comportamento Driven Development (BDD)
  • Grande struttura Anteriore (BDUF)
  • Brooks legge
  • La cattedrale e il Bazaar
  • Codice e fix
  • Costruzionista metodologia di progettazione (CDM)
  • Cowboy di codifica
  • Cristallina
  • Design-driven development (D3)
  • Non ripetere a te stesso (a SECCO) o una Volta e Solo una Volta (OAOO), Unico Punto di Verità (SPoT)
  • Sistemi dinamici Metodo di Sviluppo (DSDM)
  • L'Extreme Programming (XP)
  • Feature Driven Development
  • Hollywood Principio
  • Iterativo e incrementale di sviluppo
  • Domanda congiunta di design, aka JAD o "Applicazione Congiunta di Sviluppo"
  • Kaizen
  • Kanban
  • Principio KISS (Keep It Simple, Stupid)
  • Lean software development
  • Microsoft Solutions Framework (MSF)
  • Model-driven architecture (MDA)
  • Open source
  • Aprire Il Processo Unitario
  • Quick-and-dirty
  • Rational Unified Process (RUP)
  • Mischia
  • Smart (sviluppo agile)
  • La separazione delle competenze (SoC)
  • Service-oriented modeling
  • Software Artigianato
  • Software Di Sicurezza Del Sistema
  • Modello a spirale
  • Test-driven development (TDD)
  • Unified Process (UP)
  • V-Modello
  • Modello a cascata
  • Ruota e ha parlato modello
  • Peggio è, meglio è (New Jersey stile, in contrasto con il MIT approccio)
  • Xtreme
  • You Ain't Gonna Necessario (YAGNI)
  • Zero Uno Infinito

Altri suggerimenti

High Cohesion - Come focalizzato sono le responsabilità dei moduli che si sta progettando .

Low Coupling -. Il grado in cui i moduli si basano su altri moduli

Ha scelto la composizione per l'eredità, è uno.

Molte persone, specialmente chi è nuovo al OO inizieranno estendere le classi in cui tutti hanno davvero bisogno di è quello di utilizzare la composizione. Davvero, se si dovrebbe chiedere la vostra auto, è la nuova classe B di classe A? Se poi non si non dovrebbe estendersi.

Per esempio, diciamo che ho una classe Person, una classe di Car, e mi piacerebbe fare una nuova classe chiamata una classe DrivenCar. Un'implementazione semplice sarebbe quello di dire (facciamo finta che abbiamo ottenuto l'ereditarietà multipla)

class DrivenCar extends Person, Car  { ... }

È il DrivenCar un tipo di persona? No quindi non dovrebbe essere l'estensione persona. il DrivenCar è un auto? Sì quindi ha senso per estendere

Utilizzando la composizione implmentation sarà simile

class DrivenCar extends Car {
    private Person driver;
}

Il GRASP modelli. Sì, sembrano piuttosto banale. Più come distillazione fino a qualità essenziali che altre forme più coinvolti dimostrano.

Interfaccia. La maggior parte dei modelli di progettazione si basa sulla separazione di interfaccia e implementazione.

Quando il vostro API sono attesi in crescita, utilizzare la classe astratta invece di interfaccia. L'aggiunta di un nuovo metodo di interfaccia richiede di modificare tutte le classi che implementano.

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