Design iniziale della classe: modificatori di accesso e costruttori no-arg

1

Contesto: Studente che lavora attraverso il design di classe nel progetto personale / laterale per l'estate. Non ho mai scritto nulla implementato da altri o ho dovuto mantenere il codice. Cercando di massimizzare l'incapsulamento e immaginando cosa renderebbe il codice facile da mantenere.

Concetto: Progetto di classe Tight / Loose in cui Tight e Loose si riferiscono ai modificatori e ai costruttori di accesso.

Tight: inizialmente, tutto, compresi i setter, è privato e non viene fornito un costruttore no-arg (solo un costruttore completo).

Largo: non stretto

Eccezioni: ovvio come toString

Ragionamento: Se il codice, all'inizio, è stretto, allora dovrebbe essere garantito che le modifiche, in relazione all'accesso / creazione, non dovrebbero mai danneggiare le implementazioni esistenti. L'allentamento del codice avviene in modo incrementale e deve essere pensato, giustificato e sicuro (validato).

Vantaggio: Il codice di implementazione esistente non dovrebbe interrompersi se le modifiche vengono apportate in seguito.

Costo: Prende più tempo per creare.

Poiché questo è il mio modo di pensare, spero di ricevere un feedback sul fatto che dovrei spingere a lavorare in questo modo. Buona idea o cattiva idea?

    
posta yas 10.05.2012 - 21:18
fonte

2 risposte

0

Mantieni la tua API pubblica il più piccola possibile. Non esporre i setter ai membri della classe a meno che tu non sia assolutamente necessario. Non implementare funzionalità che ritieni possano essere utili in futuro (questo spesso porta a un aumento di funzionalità).

    
risposta data 27.06.2012 - 10:43
fonte
1

L'accoppiamento stretto è quando un gruppo di classi dipende molto l'uno dall'altro.

Vediamo prima un accoppiamento stretto tra gli oggetti java, prendi un esempio ..

class Traveler
{
    Car c=new Car();
    void startJourney()
    {
       c.move();
    }
}

e

class Car
{
  void move()
  {
     // logic...
  }
}

Nell'esempio sopra, l'oggetto Traveler dipende dall'oggetto auto. Quindi classe viaggiatore crea un oggetto di classe Car al suo interno

Se l'altro oggetto di classe è creato nella classe dipendente, esiste un accoppiamento stretto, voglio dire se il metodo nell'oggetto auto è cambiato, allora dobbiamo fare i cambiamenti anche nella classe Traveller, quindi è lo stretto accoppiamento tra Traveler e Car oggetti di classe.

L'accoppiamento lento è ottenuto attraverso un design che promuove la responsabilità singola e la separazione delle preoccupazioni.

Una classe con accoppiamento lento può essere consumata e testata indipendentemente da altre classi (concrete).

Le interfacce sono un potente strumento da utilizzare per il disaccoppiamento.

Vediamo un accoppiamento libero tra oggetti java, prendi un esempio ..

Per superare l'accoppiamento stretto tra gli oggetti, la struttura a molla utilizza il meccanismo di iniezione delle dipendenze con l'aiuto del modello POJO / POJI e tramite l'iniezione di dipendenza è possibile ottenere un accoppiamento lento

Nell'esempio precedente Traveler, la macchina è strettamente accoppiata. Se vogliamo ottenere un accoppiamento lento tra gli oggetti Traveler e Car, abbiamo bisogno di riscrivere l'applicazione come ....

class Traveler
{
    Vehicle v;
    public void setV(Vehicle v)
    {
      this.v = v;
    }     

    void startJourney()
    {
       v.move();
    }
}
    
risposta data 27.06.2012 - 08:56
fonte

Leggi altre domande sui tag