设计模式(十五)------23种设计模式(7):中介者模式

来源:互联网 发布:北京汽车美容软件 编辑:程序博客网 时间:2024/06/02 05:09

使用频率:★★★☆☆

一、什么是中介者模式

对象之间通过中介者对象进行交互,而不是直接交互;

二、补充说明

对紧密关联的各个对象解耦;

典型例子:QQ群,聊天室;

三、角色

抽象中介者

具体中介者

抽象对象

具体对象

四、例子,JAVA实现

例子说明,一个网络聊天室

抽象中介者

复制代码
package com.pichen.dp.behavioralpattern.mediator;import java.util.ArrayList;import java.util.List;public abstract class Mediator {    protected List<User> userList;    public Mediator() {        userList = new ArrayList<User>();    }    public void addUser(User user){        user.setMediator(this);        this.userList.add(user);    }        public abstract void operation(User user, String msg);}
复制代码

具体中介者

复制代码
package com.pichen.dp.behavioralpattern.mediator;public class ChatRoomMediator extends Mediator {    @Override    public void operation(User user, String msg) {        System.out.println(user.getName() + "send a msg : " + msg);        for(User userTmp : this.userList){            userTmp.getMessage(msg);        }    }}
复制代码

抽象对象

复制代码
package com.pichen.dp.behavioralpattern.mediator;public abstract class User {    protected Mediator mediator;        protected String name;        public User(String name) {        this.name = name;    }        protected void setMediator(Mediator mediator){        this.mediator = mediator;    }    protected abstract void sendMessage(String msg);    protected abstract void getMessage(String msg);    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}
复制代码

具体对象

复制代码
package com.pichen.dp.behavioralpattern.mediator;public class CommonUser extends User{    public CommonUser(String name) {        super(name);    }    @Override    protected void sendMessage(String msg) {        this.mediator.operation(this, msg);    }    @Override    protected void getMessage(String msg) {        System.out.println(this.getName() +  " get msg:"+msg);    }    }
复制代码
复制代码
package com.pichen.dp.behavioralpattern.mediator;public class VIPUser extends User{    public VIPUser(String name) {        super(name);    }    @Override    protected void sendMessage(String msg) {        this.mediator.operation(this, msg);    }    @Override    protected void getMessage(String msg) {        System.out.println(this.getName() + " get msg:"+msg);    }}
复制代码

客户端

复制代码
package com.pichen.dp.behavioralpattern.mediator;public class Main {    public static void main(String[] args) {        CommonUser user1 = new CommonUser("小王");        CommonUser user2 = new CommonUser("小陈");        VIPUser vipUser = new VIPUser("小张");                Mediator chatRoom = new ChatRoomMediator();        chatRoom.addUser(user1);        chatRoom.addUser(user2);        chatRoom.addUser(vipUser);        user2.sendMessage("hello everybody~");            }}
复制代码

执行结果

小陈send a msg : hello everybody~小王 get msg:hello everybody~小陈 get msg:hello everybody~小张 get msg:hello everybody~

 


@Author      风一样的码农
@HomePageUrl http://www.cnblogs.com/chenpi/ 
@Copyright      转载请注明出处,谢谢~ 

原创粉丝点击