Избегание условных символов в ленивой загрузке

Чтобы уточнить, я имею в виду что-то вроде:

class foon {
   private $barn = null;

   public function getBarn() {
      if (is_null($this->barn)) {
         $this->barn = getBarnImpl();
      }
      return $this->barn;
   }
}

Это особенно хорошо, когда вам не всегда нужен getBarn, а getBarn особенно дорог (например, имеет вызов БД). Есть ли способ обойтись без условного вызова? Это занимает много места, выглядит некрасиво, а видеть, как условные выражения исчезают, всегда приятно. Есть ли какая-то другая парадигма для обработки этой ленивой загрузки, которую я просто не вижу?

7
задан Matt Fenwick 5 January 2012 в 22:16
поделиться