实验名称 中介者模式的应用 日期 2019年 04 月9 日
一、实验目的:
1) 掌握命令模式(Commond)的特点
2) 分析具体问题,使用命令模式进行设计。
某软件公司要开发一套CRM系统,其中包含一个客户信息管理模块,所设计的“客户信息管理窗口”界面效果图如下图所示:
用JAVA语言实现(C#控制台应用程序实现)该模式。绘制该模式的UML图。
二、实验环境:
三、实验内容:
【模式UML图】
【模式代码】
package 实验12;
public class Button extends Component {
@Override
public void Update(){
}
}
package 实验12;
public class Client {
public static void main(String[] args) {
{
ConcreteMediator mediator = new ConcreteMediator();
Button addButton = new Button();
List list = new List();
ComboBox cb = new ComboBox();
TextBox userNameTextBox = new TextBox();
addButton.SetMediator(mediator);
list.SetMediator(mediator);
cb.SetMediator(mediator);
userNameTextBox.SetMediator(mediator);
mediator.addButton = addButton;
mediator.list = list;
mediator.cb = cb;
mediator.userNameTextBox = userNameTextBox;
addButton.Changed();
System.out.println("-----------------------------------------");
list.Changed();
}
}
}
package 实验12;
public class ComboBox extends Component {
@Override
public void Update(){
System.out.println("在列表框增加: 张无忌");
}
public void Select(){
System.out.println("在列表框选中: 小龙女");
}
}
package 实验12;
public abstract class Component {
protected Mediator mediator;
public void SetMediator(Mediator mediator){
this.mediator = mediator;
}
public void Changed(){
mediator.componentChanged(this);
}
public abstract void Update();
}
package 实验12;
public class ConcreteMediator extends Mediator{
@Override
public void componentChanged(Component c) {
if(c == addButton){
System.out.println("增加按钮");
list.Update();
cb.Update();
userNameTextBox.Update();
}
else if(c == list){
System.out.println("列表框");
cb.Select();
userNameTextBox.SetText();
}
else if(c == cb){
System.out.println("组合框");
cb.Select();
userNameTextBox.SetText();
}
}
public Button addButton;
public List list;
public TextBox userNameTextBox;
public ComboBox cb;
}
package 实验12;
public class Lable extends Component {
@Override
public void Update(){
System.out.println("文本标签内容改变,客户信息总数量加1");
}
}
package 实验12;
public class List extends Component {
@Override
public void Update(){
System.out.println("在列表框增加: 张无忌");
}
public void Select(){
System.out.println("在列表框选中: 小龙女");
}
}
package 实验12;
public abstract class Mediator {
public abstract void componentChanged(Component c);
}
package 实验12;
public class TextBox extends Component {
@Override
public void Update(){
System.out.println("客户信息增加成功后文本框清空");
}
public void SetText(){
System.out.println("文本框显示: 小龙女");
}
}
【运行截图】
四、心得体会:
中介者模式主要适用于以下情况:
1、系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象。
2、想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。