Поточная обработка Gmail, IMAP и Ruby

Я с Brad на этом. Чем больше я работаю над очень сложными системами, тем больше я вижу потребность действительно разъединить объекты. Он прав. Очевидно, что игла ничего не должна знать о стоге сена, таким образом, 1 определенно отсутствует. Но, стог сена ничего не должен знать об игле.

, Если я моделировал стог сена, я мог бы реализовать его как набор - но как набор шаг скрутки или солома - не набор игл! Однако я учел бы, что материал действительно теряется в стоге сена, но я ничего не знаю о какой точно тот материал. Я думаю, что лучше не заставить стог сена искать объекты сам по себе (как умный стог сена так или иначе). Правильный подход ко мне должен иметь стог сена, существующий набор вещей, которые находятся в нем, но не являются соломой или шагом скрутки или независимо от того, что дает стогу сена его сущность.

class Haystack : ISearchableThingsOnAFarm {
   ICollection<Hay> myHay;
   ICollection<IStuffSmallEnoughToBeLostInAHaystack> stuffLostInMe;

   public ICollection<Hay> Hay {
      get {
         return myHay;
      }
   }

   public ICollection<IStuffSmallEnoughToBeLostInAHayStack> LostAndFound {
      get {
        return stuffLostInMe;
      }
   }
}

class Needle : IStuffSmallEnoughToBeLostInAHaystack {
}

class Farmer {
  Search(Haystack haystack, 
                 IStuffSmallEnoughToBeLostInAHaystack itemToFind)
}

существует на самом деле больше, я собирался ввести и абстрагировать в интерфейсы, и затем я понял, как сумасшедший я добирался. Чувствовавший себя подобно я был в классе CS в колледже...: P

Вы получаете идею. Я думаю, идя максимально слабо связанный, хорошая вещь, но возможно я немного увлекался!:)

9
задан Yuri Niyazov 16 September 2009 в 04:01
поделиться