1. // 抽象同事类
    2. public class Colleague {
    3. protected Mediator mediator;
    4. public Colleague(Mediator mediator){
    5. this.mediator=mediator;
    6. }
    7. }
    8. // 具体同事1
    9. public class ConcreteColleague1 extends Colleague {
    10. public ConcreteColleague1(Mediator mediator) {
    11. super(mediator);
    12. // TODO Auto-generated constructor stub
    13. }
    14. public void Send(String message){
    15. // 中介者发送消息
    16. mediator.Send(message, this);
    17. }
    18. // 给中介调用的,同事2来消息就通知同事1
    19. public void Notify(String message){
    20. System.out.println("同事1得到信息:"+message);
    21. }
    22. }
    23. // 具体同事2
    24. public class ConcreteColleague2 extends Colleague {
    25. public ConcreteColleague2(Mediator mediator) {
    26. super(mediator);
    27. // TODO Auto-generated constructor stub
    28. }
    29. public void Send(String message){
    30. // 中介者发送消息
    31. mediator.Send(message, this);
    32. }
    33. // 给中介调用的,同事1来消息就通知同事2
    34. public void Notify(String message){
    35. System.out.println("同事2得到信息:"+message);
    36. }
    37. }
    38. // 抽象中介者类
    39. public abstract class Mediator {
    40. public abstract void Send(String message,Colleague colleague);
    41. }
    42. // 具体中介者
    43. public class ConcreteMediator extends Mediator{
    44. // 同事1
    45. private ConcreteColleague1 colleague1;
    46. // 同事2
    47. private ConcreteColleague2 colleague2;
    48. public void setColleague1(ConcreteColleague1 colleague1) {
    49. this.colleague1 = colleague1;
    50. }
    51. public void setColleague2(ConcreteColleague2 colleague2) {
    52. this.colleague2 = colleague2;
    53. }
    54. @Override
    55. public void Send(String message, Colleague colleague) {
    56. // 根据对象做出选择判断,通知对象
    57. if(colleague == colleague1){
    58. colleague2.Notify(message);
    59. }else{
    60. colleague1.Notify(message);
    61. }
    62. }
    63. }
    64. public class Test {
    65. public static void main(String[] args) {
    66. // 中介者
    67. ConcreteMediator mediator =new ConcreteMediator();
    68. // 同事1 同事2
    69. ConcreteColleague1 c1 = new ConcreteColleague1(mediator);
    70. ConcreteColleague2 c2 = new ConcreteColleague2(mediator);
    71. mediator.setColleague1(c1);
    72. mediator.setColleague2(c2);
    73. // 通过中介者发送消息
    74. c1.Send("吃过饭了吗?");
    75. c2.Send("没有呢,你打算请客?");
    76. }
    77. }