ModestGenius

Untitled

Dec 6th, 2015
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.54 KB | None | 0 0
  1. Main:
  2. package com.company2;
  3.  
  4. class Main
  5. {
  6. // Метод рекурсивной рассылки сообщения от одного узла к другим
  7. public static void Distribute(PostOffice P, Message message) {
  8. if(P.getObservers()!=null) {
  9. P.NotifyObservers(message);
  10. for (PostOffice o : P.getObservers()) // Для каждого наблюдателя данного узла,
  11. Distribute(o, message); // Приводим этот наблюдатель к типу узла
  12. }
  13.  
  14. }
  15.  
  16. public static void main(String[] args)
  17. {
  18. System.out.println("asd");
  19. // Создаем два сообщения
  20. //Message message1 = new Message("YOU READ SECRET MESSAGE",true);
  21. //Message message2 = new Message("YOU READ USUAL MESSAGE",false);
  22. // Самостоятельно конструируем дерево узлов
  23. /* Node node1 = new Node("Node_1"); // Первый наблюдаемый (сам не наблюдает ни за кем)
  24. Node node2 = new Node("Node_2",node1); // Узел, который наблюдает за node1
  25. Node node3 = new Node("Node_3", node1);
  26. SpyNode spyNode1 = new SpyNode("SpyNode1", node3); // Секретный узел, который наблюдае за node3
  27. Node node4 = new Node("Node_5", spyNode1);
  28. SpyNode spyNode2 = new SpyNode("SpyNode2", node4);
  29. // Рассылаем сообщение message1 от узла node1
  30. Distribute(node1, message1);
  31. // Рассылаем сообщение message2 от узла node1
  32. Distribute(node1, message2);
  33. // Секретная информация в нычке
  34. SpyNode.getNychka();*/
  35. }
  36. }
  37.  
  38.  
  39. PostOffice:
  40. package com.company2;
  41.  
  42. import java.util.ArrayList;
  43. import java.util.List;
  44.  
  45. /**
  46. * Created by Максим on 06.12.2015.
  47. */
  48. public class PostOffice {
  49.  
  50. private String Name;
  51. private List<Employee> employees = new ArrayList<>();
  52. private List<PostOffice> observers;
  53. private Message mes;
  54. PostOffice(String name)
  55. {
  56. observers = new ArrayList<PostOffice>();
  57. this.Name = name;
  58. }
  59.  
  60. public String getName() {
  61. return this.Name;
  62. }
  63. public List<Employee> getEmployees() {
  64. return this.employees;
  65. }
  66. public List<PostOffice> getObservers()
  67. {
  68. return this.observers;
  69. }
  70.  
  71. public void RegisterObserver(PostOffice o) // Добавляем наблюдателя в список
  72. {
  73. observers.add(o);
  74. }
  75. public void RemoveObserver(PostOffice o) // Удаляем наблюдателя из списка
  76. {
  77. observers.remove(o);
  78. }
  79.  
  80.  
  81. public void NotifyObservers(Message message) // Шлём каждому наблюдателю сообщение от наблюдаемого
  82. {
  83. this.mes = mes;
  84. for (Employee e : employees) {
  85. for (PostOffice o : observers) {
  86. o.Send(e.toWork(message));
  87. System.out.printf(" to %s by Postman %s \n", o.Name, e.getName());
  88. }
  89.  
  90. }
  91. }
  92.  
  93. public void Send(Message mes)
  94. {
  95. System.out.printf("%s send message \" %s ", this.Name,mes.text);
  96. }
  97. }
  98.  
  99.  
  100. Message:
  101. package com.company2;
  102.  
  103. public class Message {
  104. public final boolean secret;
  105. public String text; // Информационная часть сообщения
  106.  
  107. Message(String text, boolean secret)
  108. {
  109. this.text = text;
  110. this.secret = secret;
  111. }
  112. }
  113.  
  114. Employee:
  115. package com.company2;
  116.  
  117. public abstract class Employee {
  118. private String name;
  119.  
  120. public Employee(String name) {
  121. this.name = name;
  122. }
  123.  
  124. public String getName() {
  125. return this.name;
  126. }
  127.  
  128. public void setName(String name) {
  129. this.name = name;
  130. }
  131.  
  132. public abstract Message toWork(Message mes);
  133. }
  134.  
  135. Postman:
  136. package com.company2;
  137. /**
  138. * Created by Максим on 06.12.2015.
  139. */
  140. public class Postman extends Employee {
  141. private Message mes;
  142.  
  143. public Postman(String name) {
  144. super(name);
  145. }
  146.  
  147. public void receiveMessage(Message mes)
  148. {
  149. this.mes=mes;
  150. }
  151. public Message sendMessage()
  152. {
  153. return mes;
  154. }
  155. @Override
  156. public Message toWork(Message mes) {
  157. receiveMessage(mes);
  158. return sendMessage();
  159. }
  160.  
  161. }
Advertisement
Add Comment
Please, Sign In to add comment