软件设计体系结构-实验报告12

实验名称             中介者模式的应用                    日期 2019 04 9

一、实验目的:

1) 掌握命令模式(Commond)的特点

2) 分析具体问题,使用命令模式进行设计。

 

某软件公司要开发一套CRM系统,其中包含一个客户信息管理模块,所设计的“客户信息管理窗口”界面效果图如下图所示:

 

软件设计体系结构-实验报告12_第1张图片

软件设计体系结构-实验报告12_第2张图片

 

 

JAVA语言实现(C#控制台应用程序实现)该模式。绘制该模式的UML图。

 

软件设计体系结构-实验报告12_第3张图片

二、实验环境:

 

 

 

三、实验内容:

【模式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("文本框显示: 小龙女");
    }
}

运行截图

软件设计体系结构-实验报告12_第4张图片

 

四、心得体会:

中介者模式主要适用于以下情况:

 1、系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象。

 2、想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(软件设计体系结构)