设计模式总结之中介者模式
2018-03-06 20:35
211 查看
定义:用一个中介者对象封装一系列的对象交互,中介者使各个对象不需要显示地相互作用,从而使耦合松散,而且可以独立改变它们之间的交互。
类型:行为类模式
中介者模式主要是为了解决因交互对象较多而造成的耦合度过高,对象关系混乱的问题。例如:
一个班级各个同学老师之间如果单独交流,则效率低下,关系复杂。
而建立一个qq群,大家都通过qq群来交流,则耦合度将变得松散,qq群则起到中介作用。中介者模式设计到三个成员:抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类的通信。一般由一个或多个抽象方法构成,并且由子类实现。中介者实现类:实现抽象中介者,并通过其一同事类,通知消息给其他同事类。同事类:本身可以影响其他类,也可以被其他类影响的类,被称作同事类。也可以是继承于同一父类的各个子类。这里模仿一个客户和中介的例子,当中介发送消息时,客户可以通过中介者接收到,客户发送消息时,中介可以通过中介者接收到。public abstract class College {
protected Media media;
private String name;
public College() {
// TODO Auto-generated constructor stub
}
public College(Media media, String name) {
super();
this.media = media;
this.name = name;
}
public Media getMedia() {
return media;
}
public void setMedia(Media media) {
this.media = media;
}
public abstract void sendMessage(String msg);
public abstract void receiveMessage(String msg);
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
类型:行为类模式
中介者模式主要是为了解决因交互对象较多而造成的耦合度过高,对象关系混乱的问题。例如:
一个班级各个同学老师之间如果单独交流,则效率低下,关系复杂。
而建立一个qq群,大家都通过qq群来交流,则耦合度将变得松散,qq群则起到中介作用。中介者模式设计到三个成员:抽象中介者:定义好同事类对象到中介者对象的接口,用于各个同事类的通信。一般由一个或多个抽象方法构成,并且由子类实现。中介者实现类:实现抽象中介者,并通过其一同事类,通知消息给其他同事类。同事类:本身可以影响其他类,也可以被其他类影响的类,被称作同事类。也可以是继承于同一父类的各个子类。这里模仿一个客户和中介的例子,当中介发送消息时,客户可以通过中介者接收到,客户发送消息时,中介可以通过中介者接收到。public abstract class College {
protected Media media;
private String name;
public College() {
// TODO Auto-generated constructor stub
}
public College(Media media, String name) {
super();
this.media = media;
this.name = name;
}
public Media getMedia() {
return media;
}
public void setMedia(Media media) {
this.media = media;
}
public abstract void sendMessage(String msg);
public abstract void receiveMessage(String msg);
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class CustomerCollege extends College { public CustomerCollege() { } public CustomerCollege(Media media, String name) { super(media,name); } @Override public void sendMessage(String msg) { media.excute(this, msg); } @Override public void receiveMessage(String msg) { System.out.println("客户"+ getName() +"收到消息:"+msg); } }
public class MediumCollege extends College{ public MediumCollege() { // TODO Auto-generated constructor stub } public MediumCollege(Media media, String name) { super(media,name); } @Override public void sendMessage(String msg) { media.excute(this, msg); } @Override public void receiveMessage(String msg) { System.out.println("中介:" + getName() + " 收到消息:" + msg); } }
public abstract class Media { protected ArrayList<College> mStudentColleges = new ArrayList<>(); protected ArrayList<College> mTeacherColleges = new ArrayList<>(); public void addCollege(College college){ college.setMedia(this); if (college instanceof MediumCollege) { mStudentColleges.add(college); }else { mTeacherColleges.add(college); } } public void removeCollege(College college){ if (college instanceof MediumCollege) { mStudentColleges.remove(college); }else { mTeacherColleges.remove(college); } } public abstract void excute(College college,String msg); }
public class CollegeMedia extends Media{ @Override public void excute(College college, String msg) { if (college instanceof MediumCollege) { for (int i = 0; i < mTeacherColleges.size(); i++) { mTeacherColleges.get(i).receiveMessage(msg); } }else if(college instanceof CustomerCollege){ for (int i = 0; i < mStudentColleges.size(); i++) { mStudentColleges.get(i).receiveMessage(msg); } } } }
相关文章推荐
- "围观"设计模式(31)--行为型设计模式总结(模板、观察者、策略、状态、责任链、命令、访问者、中介者、备忘录、解释器)
- 设计模式学习总结(23) 中介者模式
- 设计模式学习总结-中介者模式(Mediator Method)
- 设计模式总结之Mediator Pattern(中介者模式)
- 设计模式学习总结(23) 中介者模式
- 设计模式总结4--singleton pattern
- 【设计模式】中介者模式
- 设计模式学习总结-单件模式(Singleton Pattern)
- 设计模式总结之没有结束的结尾
- 设计模式学习的阶段性总结(创建型设计模式part)
- 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
- 设计模式总结
- 设计模式6大设计原则--简单总结
- 设计模式学习总结-代理模式(Proxy Method)
- 设计模式之中介者模式
- 设计模式之中介者设计模式n
- Java设计模式总结
- 总结 - 设计模式,企业应用架构模式,架构模式
- 设计模式总结之Bridge Pattern(桥接模式)
- 设计模式总结