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

实验名称             中介者模式的应用                    日期 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、想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值