• 行为型模式-中介者模式


     

    1. package per.mjn.pattern.mediator;
    2. public abstract class Person {
    3. protected String name;
    4. protected Mediator mediator;
    5. public Person(String name, Mediator mediator) {
    6. this.name = name;
    7. this.mediator = mediator;
    8. }
    9. }
    1. package per.mjn.pattern.mediator;
    2. // 租房者
    3. public class Tenant extends Person {
    4. public Tenant(String name, Mediator mediator) {
    5. super(name, mediator);
    6. }
    7. // 和中介联系(沟通)
    8. public void contact(String message) {
    9. mediator.contact(message, this);
    10. }
    11. // 获取信息
    12. public void getMessage(String message) {
    13. System.out.println("租房者" + name + "获取到的信息是:" + message);
    14. }
    15. }
    1. package per.mjn.pattern.mediator;
    2. public class HouseOwner extends Person {
    3. public HouseOwner(String name, Mediator mediator) {
    4. super(name, mediator);
    5. }
    6. // 和中介联系(沟通)
    7. public void contact(String message) {
    8. mediator.contact(message, this);
    9. }
    10. // 获取信息
    11. public void getMessage(String message) {
    12. System.out.println("房主" + name + "获取到的信息是:" + message);
    13. }
    14. }
    1. package per.mjn.pattern.mediator;
    2. public abstract class Mediator {
    3. public abstract void contact(String message, Person person);
    4. }
    1. package per.mjn.pattern.mediator;
    2. public class MediatorStructure extends Mediator {
    3. // 聚合房主和租房者对象
    4. private HouseOwner houseOwner;
    5. private Tenant tenant;
    6. @Override
    7. public void contact(String message, Person person) {
    8. if (person == houseOwner) {
    9. tenant.getMessage(message);
    10. } else {
    11. houseOwner.getMessage(message);
    12. }
    13. }
    14. public HouseOwner getHouseOwner() {
    15. return houseOwner;
    16. }
    17. public void setHouseOwner(HouseOwner houseOwner) {
    18. this.houseOwner = houseOwner;
    19. }
    20. public Tenant getTenant() {
    21. return tenant;
    22. }
    23. public void setTenant(Tenant tenant) {
    24. this.tenant = tenant;
    25. }
    26. }
    1. package per.mjn.pattern.mediator;
    2. public class Client {
    3. public static void main(String[] args) {
    4. // 创建中介者对象
    5. MediatorStructure mediator = new MediatorStructure();
    6. // 创建租房者对象
    7. Tenant tenant = new Tenant("李四", mediator);
    8. // 创建房主对象
    9. HouseOwner houseOwner = new HouseOwner("张三", mediator);
    10. // 中介者要知道具体的房主和租房者
    11. mediator.setTenant(tenant);
    12. mediator.setHouseOwner(houseOwner);
    13. tenant.contact("我要租三室的房子!!");
    14. houseOwner.contact("我这有!");
    15. }
    16. }

     

  • 相关阅读:
    SpringBatch(14):JobOperator启动Job
    视频编解码 — 带宽预测
    【转】浅谈威胁狩猎(Threat Hunting)
    Pr:首选项 - 媒体缓存
    pymysql的使用
    Linux学习笔记2 - 文件系统
    第3章 语义陷阱
    android studio虚拟机中一个程序模拟udp通信
    实验一. Java编程基础
    Linux系统目录结构
  • 原文地址:https://blog.csdn.net/weixin_43844521/article/details/128085973