Qual è il pattern chiamato quando i getter si assumono la responsabilità delle impostazioni?

4

Ho usato un modello per anni, ma non so come si chiama.

Sembra così ....

class xzy
{

  public function getFoo()
  {
    if ( undefined(this.foo) )
    {
       this.foo = new Foo;
    }
    return this.foo
  }

  public function setFoo(foo)
  {
    this.foo = foo;
    return this;
  }

  public function getResult()
  {
    if ( undefined(this.result) )
    {
       this.result = this.getFoo().action();
    }
    return this.result;
  }

}

Lo trova ottimo per i test, ma consente comunque un alto livello di incapsulamento. È anche ottimo per asciugare il codice. Anche io uso molto raramente un costruttore. Sono ora in una posizione in cui potrei davvero fare la specificazione del modello in alcuni documenti, ma non so come si chiama ed è una cosa difficile da provare e Google.

    
posta thomas-peter 10.09.2013 - 15:14
fonte

1 risposta

10

inizializzazione pigra

Mi piace usarlo per memorizzare in cache un risultato di calcolo che è costoso e mi permette di svuotare facilmente la cache quando una delle variabili cambia (e quando ci sono probabilmente altre modifiche in attesa di accadere):

public Rectangle getBoundingRect(){
    if(bbox==null){
    bbox=calculateBBox();
    }
    return bbox;
}

private Rectangle calculateBBox(){
    //expensive operation
    return //...
}

public void updateGeom(){
    bbox=null;
}
    
risposta data 10.09.2013 - 15:20
fonte

Leggi altre domande sui tag