Паттерн: Посетитель (Visitor)
Исходник: CompositeEquipment.java, язык: java [code #530, hits: 7641]
автор: this [добавлен: 10.10.2007]
  1. package visitor;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Iterator;
  5. import java.util.List;
  6.  
  7. public class CompositeEquipment extends Equipment {
  8. private List<Equipment> innerParts = new ArrayList<Equipment>();
  9.  
  10. public CompositeEquipment(String name) {
  11. super(name);
  12. }
  13.  
  14. public void Accept(EquipmentVisitor v) {
  15.  
  16. }
  17.  
  18. public int getDisountPrice() {
  19. int price = 0;
  20. for (Equipment eq : innerParts) {
  21. price += eq.getDisountPrice();
  22. }
  23. return price;
  24. }
  25.  
  26. public int getNetPrice() {
  27. int price = 0;
  28. for (Equipment eq : innerParts) {
  29. price += eq.getNetPrice();
  30. }
  31. return price;
  32. }
  33.  
  34. public int getPower() {
  35. int power = 0;
  36. for (Equipment eq : innerParts) {
  37. power += eq.getPower();
  38. }
  39. return power;
  40. }
  41.  
  42.  
  43.  
  44.  
  45.  
  46. public void Add(Equipment eq) {
  47. innerParts.add(eq);
  48. }
  49.  
  50. public Iterator<Equipment> getIterator() {
  51. return innerParts.iterator();
  52. }
  53.  
  54. public void Remove(Equipment eq) {
  55. innerParts.remove(eq);
  56. }
  57.  
  58. }
Сущность Element

Поддержка составных частей оборудования.
Тестировалось на: java 1.5.0_04

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