调解员

行为设计模式之一,允许对象在中介者的帮助下相互通信。
中介器通过防止对象相互直接依赖来促进松散耦合。相反,他们使用中介来相互沟通。

让我们通过实现不同用户互相聊天的聊天室来理解这一点

调解员

public interface chatmediator {
    public void sendmessage(user user, string message);
    public void adduser(user user);
}

public class chatroommediator implements chatmediator {
    private list users;
    public chatroommediator(){
        this.users = new arraylist<>();
    }
    @override
    public void adduser(user u){
        users.add(u);
    }

    @override
    public void sendmessage(user u, string message){
        for(user user : users){
            if(user!=u){
                user.receive(message);
            }
        }
    }
}

用户

public class user {
    chatmediator mediator;
    private string name;

    public user

(string n,chatmediator m){ this.name = n; this.mediator = m; } public string getname(){ return this.name; } public void send(string message){ system.out.println(this.name+":sent:"+message); mediator.sendmessage(this,message); } public void receive(string message){ system.out.println(this.name+":received:"+ message); } }

主要

public class main {
    public static void main(string args[]){
        chatmediator mediator = new chatroommediator();
        user user1 = new user("prashant",mediator);
        user user2 = new user("sandeep", mediator);
        user user3 = new user("ajay", mediator);

        mediator.adduser(user3);
        mediator.adduser(user2);
        mediator.adduser(user1);

        user1.send("hi all");
        user2.send("hi prashant");
        user3.send("hi...");
    }
}

输出:

prashant:sent:Hi All
ajay:received:Hi All
sandeep:received:Hi All
sandeep:sent:Hi Prashant
ajay:received:Hi Prashant
prashant:received:Hi Prashant
ajay:sent:Hi...
sandeep:received:Hi...
prashant:received:Hi...

要点

  • 用户对象松散耦合,即即使某些用户被删除或修改也不会影响任何其他用户
  • mediator 是所有用户之间的中间人