Паттерн: Строитель (Builder)
Исходник: Client.java, язык: java [code #419, hits: 9057]
автор: this [добавлен: 30.05.2007]
  1. package builder;
  2.  
  3. import abstractFactory.rusFleet.Kamaz;
  4. import abstractFactory.rusFleet.Vaz2110;
  5.  
  6. public class Client {
  7. private static ProductionLine line;
  8.  
  9. public static void main(String[] args) {
  10. line = new ProductionLine();
  11.  
  12. CarBuilder vazBuilder = new Vaz2110Builder();
  13. Vaz2110 vaz = (Vaz2110) line.MakeCar(vazBuilder);
  14. System.out.println(vaz);
  15.  
  16. // Business logic with vaz var...
  17.  
  18. Kamaz kamaz = (Kamaz) line.MakeCar(new KamazBuilder());
  19. System.out.println(kamaz);
  20.  
  21. // Business logic with kamaz var...
  22.  
  23. Vaz2110 vaz4Dakar = (Vaz2110) line.MakeSportCar(vazBuilder);
  24. Kamaz kamaz4Dakar = (Kamaz) line.MakeSportCar(new KamazBuilder());
  25. System.out.println(vaz4Dakar + ", " + kamaz4Dakar);
  26.  
  27.  
  28. RotatingPartCountBuilder counter = new RotatingPartCountBuilder(100);
  29.  
  30. // Part number of usial car
  31. line.MakeCar(counter);
  32. int partNum = counter.getCount();
  33.  
  34. // Part number of usual car
  35. counter.Reset(200);
  36. line.MakeSportCar(counter);
  37. int partNum2 = counter.getCount();
  38.  
  39. System.out.println("in car " + partNum + " rotating parts, " +
  40. "but in sports car: " + partNum2);
  41.  
  42. // other logic..
  43.  
  44. }
  45.  
  46. }
Программа демонстрации.

Используемые классы и интерфейсы автомобилей приведены при реализации абстрактной фабрики.
Тестировалось на: java 1.5.0_04

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