设计模式 - 行为型模式 - 中介者模式

来源:互联网 发布:湘北vs山王数据 编辑:程序博客网 时间:2024/06/06 09:01

中介者模式


//抽象中介者abstract class Mediator {    public abstract void componentChanged(Component c);}//具体中介者class ConcreteMediator extends Mediator {    //维持对各个同事对象的引用    public Button addButton;    public List list;    public TextBox userNameTextBox;    public ComboBox cb;    //封装同事对象之间的交互    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();        }    }}//抽象组件类:抽象同事类abstract class Component {    protected Mediator mediator;    public void setMediator(Mediator mediator) {        this.mediator = mediator;    }    //转发调用    public void changed() {        mediator.componentChanged(this);    }    public abstract void update();}//按钮类:具体同事类class Button extends Component {    public void update() {        //按钮不产生交互    }}//列表框类:具体同事类class List extends Component {    public void update() {        System.out.println("列表框增加一项:张无忌。");    }    public void select() {        System.out.println("列表框选中项:小龙女。");    }}//组合框类:具体同事类class ComboBox extends Component {    public void update() {        System.out.println("组合框增加一项:张无忌。");    }    public void select() {        System.out.println("组合框选中项:小龙女。");    }}//文本框类:具体同事类class TextBox extends Component {    public void update() {        System.out.println("客户信息增加成功后文本框清空。");    }    public void setText() {        System.out.println("文本框显示:小龙女。");    }}class Client {    public static void main(String args[]) {        //定义中介者对象        ConcreteMediator mediator;        mediator = new ConcreteMediator();        //定义同事对象        Button addBT = new Button();        List list = new List();        ComboBox cb = new ComboBox();        TextBox userNameTB = new TextBox();        addBT.setMediator(mediator);        list.setMediator(mediator);        cb.setMediator(mediator);        userNameTB.setMediator(mediator);        mediator.addButton = addBT;        mediator.list = list;        mediator.cb = cb;        mediator.userNameTextBox = userNameTB;        addBT.changed();        System.out.println("-----------------------------");        list.changed();    }}
0 0
原创粉丝点击