Паттерн: Посетитель (Visitor)
Исходник: PricingVisitor.java, язык: java [code #535, hits: 7559]
автор: this [добавлен: 10.10.2007]
  1. package visitor;
  2.  
  3. /**
  4. * Посетитель рассчитывающий стоимость
  5. */
  6. public class PricingVisitor implements EquipmentVisitor {
  7.  
  8. /**
  9. * Полная цена всего
  10. */
  11. private int total;
  12.  
  13.  
  14. /**
  15. * Прибавляем полную стоимость карты
  16. * @see visitor.EquipmentVisitor#VisitCard(visitor.Card)
  17. */
  18. public void VisitCard(Card c) {
  19. total += c.getNetPrice();
  20. }
  21.  
  22. /**
  23. * Здесь же, поскольку это системник, содержащий
  24. * большое количество внутренних частей - применяем скидку
  25. * @see visitor.EquipmentVisitor#VisitChassis(visitor.Chassis)
  26. */
  27. public void VisitChassis(Chassis ch) {
  28. total += ch.getDisountPrice();
  29. }
  30.  
  31. /**
  32. * Прибавляем полную стоимость флоппика
  33. * @see visitor.EquipmentVisitor#VisitFloppyDisk(FloppyDisk)
  34. */
  35. public void VisitFloppyDisk(FloppyDisk d) {
  36. total += d.getNetPrice();
  37. }
  38.  
  39. public int getTotal() {
  40. return total;
  41. }
  42.  
  43. }
Сущность ConcreteVisitor

Конкретный вид посетителя, рассчитывающего суммарную стоимость.
Тестировалось на: java 1.5.0_04

+добавить реализацию