中介者模式(Mediator)(对象行为型模式)
2017-06-29 11:10
429 查看
参考文档:
1.设计模式-可复用面向对象软件的基础
2.http://blog.csdn.net/hguisu/article/details/7554612(设计模式 ( 十五 ) 中介者模式Mediator(对象行为型))
中介者模式(Mediator)(对象行为型模式)
理论方面的知识,可以参考 参考文档。
看一下mediator的结构:
代码实现:
1.设计模式-可复用面向对象软件的基础
2.http://blog.csdn.net/hguisu/article/details/7554612(设计模式 ( 十五 ) 中介者模式Mediator(对象行为型))
中介者模式(Mediator)(对象行为型模式)
理论方面的知识,可以参考 参考文档。
看一下mediator的结构:
代码实现:
DialogDirector.java:
package com.rick.designpattern.mediator; /** * Created by MyPC on 2017/6/23. */ public abstract class DialogDirector { public DialogDirector() { } public abstract void showDialog(); public abstract void widgetChanged(Widget widget); public abstract void createWidgets(); }
FontDialogDirector.java:
package com.rick.designpattern.mediator; /** * Created by MyPC on 2017/6/23. */ public class FontDialogDirector extends DialogDirector { private Button _ok, _cancel; private ListBox listBox; private EntryField entryField; @Override public void createWidgets() { _ok = new Button(this); _cancel = new Button(this); listBox = new ListBox(this); entryField = new EntryField(this); } @Override public void showDialog() { System.out.println("显示对话框"); } @Override public void widgetChanged(Widget theChangedWidget) { if (theChangedWidget == listBox) { entryField.setText(listBox.getSelection()); } else if (theChangedWidget == _ok) { System.out.println("提交"); } else if (theChangedWidget == _cancel) { System.out.println("取消对话框"); } } public Button get_ok() { return _ok; } public void set_ok(Button _ok) { this._ok = _ok; } public Button get_cancel() { return _cancel; } public void set_cancel(Button _cancel) { this._cancel = _cancel; } public ListBox getListBox() { return listBox; } public void setListBox(ListBox listBox) { this.listBox = listBox; } public EntryField getEntryField() { return entryField; } public void setEntryField(EntryField entryField) { this.entryField = entryField; } }
Widget.java:
package com.rick.designpattern.mediator; /** * Created by MyPC on 2017/6/23. */ public abstract class Widget { private DialogDirector dialogDirector; public Widget(DialogDirector dialogDirector) { this.dialogDirector = dialogDirector; } public void changed() { dialogDirector.widgetChanged(this); } public abstract void handleMouse(MouseEvent mouseEvent); }
ListBox.java:
package com.rick.designpattern.mediator; import java.util.ArrayList; import java.util.List; /** * Created by MyPC on 2017/6/23. */ public class ListBox extends Widget { private List<String> listItems; private int position; public ListBox(DialogDirector dialogDirector) { super(dialogDirector); listItems = new ArrayList<String>(); listItems.add("1"); listItems.add("2"); listItems.add("3"); listItems.add("4"); listItems.add("5"); } public String getSelection() { if (null == listItems || listItems.size() <= 0) { return ""; } else { return listItems.get(position); } } public void setList(List<String> listItems) { this.listItems = listItems; } @Override public void handleMouse(MouseEvent mouseEvent) { position = mouseEvent.getY(); } }
EntryField.java:
package com.rick.designpattern.mediator; /** * Created by MyPC on 2017/6/23. */ public class EntryField extends Widget { private String text; public EntryField(DialogDirector dialogDirector) { super(dialogDirector); } public void setText(String text) { this.text = text; System.out.println(text); } public String getText() { return text; } @Override public void handleMouse(MouseEvent mouseEvent) { } }
Button.java:
package com.rick.designpattern.mediator; /** * Created by MyPC on 2017/6/23. */ public class Button extends Widget { private String buttonText; public Button(DialogDirector dialogDirector) { super(dialogDirector); } public void setText(String text) { this.buttonText = text; System.out.println(text); } @Override public void handleMouse(MouseEvent mouseEvent) { changed(); } }
MouseEvent.java:
package com.rick.designpattern.mediator; /** * Created by MyPC on 2017/6/23. */ public class MouseEvent { private int x, y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } }
Client.java:
package com.rick.designpattern.mediator; /** * Created by MyPC on 2017/6/23. */ public class Client { public static void main(String[] args) { FontDialogDirector fontDialogDirector = new FontDialogDirector(); fontDialogDirector.createWidgets(); fontDialogDirector.showDialog(); fontDialogDirector.widgetChanged(fontDialogDirector.get_ok()); fontDialogDirector.widgetChanged(fontDialogDirector.get_cancel()); fontDialogDirector.widgetChanged(fontDialogDirector.getListBox()); } }
相关文章推荐
- 设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)
- 调停者模式(Mediator Pattern,对象行为型模式,中介者模式)
- 设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)
- 设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)
- C#面向对象模式设计第十七讲:Mediator 中介者模式(行为型模式)
- 设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)
- [导入]C#面向对象设计模式纵横谈(17):(行为型模式) Mediator 中介者模式.zip(8.75 MB)
- Mediator(中介者)-对象行为型模式
- [设计模式笔记]三. 行为型模式--19. Mediator模式(中介者)对象行为型模式(一)
- 3.5 Mediator(中介者) -- 对象行为型模式
- MEDIATOR(中介者)——对象行为型模式
- 设计模式十八:mediator(中介者模式)——对象行为型模式
- 中介者(Mediator)----对象行为型模式
- 设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)
- 设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)
- 设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)
- 调停者模式(Mediator Pattern,对象行为型模式,中介者模式)
- 设计模式(17)-行为型-中介者模式(Mediator)
- 设计模式16:Mediator 中介者模式(行为型模式)
- 设计模式(行为型)之中介者模式(Mediator Pattern)