Паттерн: Строитель (Builder)
Исходник: ProductionLine.java, язык: java [code #414, hits: 8328]
автор: this [добавлен: 30.05.2007]
  1. package builder;
  2.  
  3. import abstractFactory.Car;
  4.  
  5. public class ProductionLine {
  6. public Car MakeCar(CarBuilder builder) {
  7. builder.MakeCar();
  8.  
  9. // Wheels:
  10. builder.MakeWheel(Car.LEFT, Car.BACK);
  11. builder.MakeWheel(Car.RIGHT, Car.BACK);
  12.  
  13. builder.MakeWheel(Car.LEFT, Car.FRONT);
  14. builder.MakeWheel(Car.RIGHT, Car.FRONT);
  15.  
  16. // Doors:
  17. builder.MakeDoor(Car.LEFT, Car.BACK);
  18. builder.MakeDoor(Car.RIGHT, Car.BACK);
  19.  
  20. builder.MakeDoor(Car.LEFT, Car.FRONT);
  21. builder.MakeDoor(Car.RIGHT, Car.FRONT);
  22.  
  23. // Engine
  24. builder.MakeEngine(Car.FRONT);
  25.  
  26. builder.Colour(Car.METALLIC);
  27.  
  28. return builder.GetCar();
  29. }
  30.  
  31. public Car MakeSportCar(CarBuilder builder) {
  32. builder.MakeCar();
  33.  
  34. // 4 wheels:
  35. builder.MakeWheel(Car.LEFT, Car.BACK);
  36. builder.MakeWheel(Car.RIGHT, Car.BACK);
  37.  
  38. builder.MakeWheel(Car.LEFT, Car.FRONT);
  39. builder.MakeWheel(Car.RIGHT, Car.FRONT);
  40.  
  41. // Only 2 doors:
  42. builder.MakeDoor(Car.LEFT, Car.FRONT);
  43. builder.MakeDoor(Car.RIGHT, Car.FRONT);
  44.  
  45. // Engine at the back
  46. builder.MakeEngine(Car.BACK);
  47.  
  48. builder.Colour(Car.RED);
  49.  
  50. return builder.GetCar();
  51. }
  52. }
  53.  
Сущность Director

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

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