设计模式练习(15)——中介者模式
来源:互联网 发布:php文章发布系统 编辑:程序博客网 时间:2024/05/29 09:30
中介者模式
一、题目:
某软件公司需要开发一套图形用户界面类库,该类库包含若干个预定义的窗格对象,例如TextPane,ListPane,GraphicPane,窗口之间不允许直接调用,具有该类库的应用由一个包含一组窗格的窗口(Window)组成,窗口需要协调窗格之间的行为,采用中介者模式收集系统
(1)绘制中介者模式结构视图
(2)给出实例类图并实现代码。
二、所用模式结构视图:
三、实例类图:
四、实例实现代码:
(因为区分,所以在类的前面加了Gj19)
抽象中介者 -窗口
package gjMediatorPattern;/** * 抽象中介者 -窗口 * @author gongjian * */public abstract class Gj19Window { public abstract void doSomeThing(Gj19Pane pane,String order);}
具体中介者
package gjMediatorPattern;/** * 具体中介者 * @author gongjian */public class Gj19ConcreteWindow extends Gj19Window{ private Gj19GraphicPane graphicPane;private Gj19ListPane listPane; private Gj19TextPane textPane; public Gj19GraphicPane getGraphicPane() { return graphicPane; } public void setGraphicPane(Gj19GraphicPane graphicPane) { this.graphicPane = graphicPane; } public Gj19ListPane getListPane() { return listPane; } public void setListPane(Gj19ListPane listPane) { this.listPane = listPane; } public Gj19TextPane getTextPane() { return textPane; } public void setTextPane(Gj19TextPane textPane) { this.textPane = textPane; } public Gj19ConcreteWindow(Gj19GraphicPane graphicPane, Gj19ListPane listPane,Gj19TextPane textPane) { this.graphicPane = graphicPane; this.listPane = listPane; this.textPane = textPane; } @Override public void doSomeThing(Gj19Pane pane, String order) { pane.update(order); }}
抽象同事类-窗口格
package gjMediatorPattern;/** * 抽象同事类-窗口格 * * @author gongjian * */public abstract class Gj19Pane { private Gj19Window window; public Gj19Window getWindow() { return window; } public void setWindow(Gj19Window window) { this.window = window; } public abstract void update(String order);}
具体同事类
package gjMediatorPattern;/** * 具体同事类 * @author gong * */public class Gj19TextPane extends Gj19Pane{ @Override public void update(String order) { System.out.println("TextPane接收到指令"+order); }}
具体同事类
package gjMediatorPattern;/** * 具体同事类 * @author gong * */public class Gj19GraphicPane extends Gj19Pane{ @Override public void update(String order) { System.out.println("GraphicPane接收到指令"+order); }}
具体同事类
package gjMediatorPattern;/** * 具体同事类 * @author gong * */public class Gj19ListPane extends Gj19Pane{ @Override public void update(String order) { System.out.println("ListPane接收到指令"+order); }}
中介者模式客户端
package gjMediatorPattern;/** * 中介者模式客户端 * @author gong * */public class Client { public static void main(String[] args) { Gj19ListPane gj19ListPane =new Gj19ListPane(); Gj19TextPane gj19TextPane = new Gj19TextPane(); Gj19GraphicPane gj19GraphicPane = new Gj19GraphicPane(); Gj19ConcreteWindow concreteWindow = new Gj19ConcreteWindow(gj19GraphicPane,gj19ListPane, gj19TextPane); System.out.println("============系统发出请求==============="); concreteWindow.doSomeThing(gj19GraphicPane, "图像放大1.2倍"); concreteWindow.doSomeThing(gj19TextPane, "文本缩小到原来的0.8倍"); concreteWindow.doSomeThing(gj19ListPane, "列表左移10px"); System.out.println("=============系统结束==================="); }}
五、运行结果:
0 0
- 设计模式练习(15)——中介者模式
- 中介者设计模式--练习
- 设计模式——中介者模式
- 设计模式——中介者模式
- 设计模式——中介者模式
- 设计模式——中介者模式
- 设计模式——中介者模式
- 设计模式—Mediator中介者模式
- 大话设计模式—中介者模式
- Java设计模式—中介者模式
- JAVA设计模式——中介者模式(Mediator)
- 设计模式(二十一)——中介者模式
- 设计模式—中介者模式(二十一)
- 设计模式——中介者
- 设计模式学习—Mediator(中介者)
- 大话设计—中介者模式
- 设计模式——中介者设计模式
- 设计模式之——中介者设计模式
- 内存对齐详解
- 探索HashMap实现原理及其在jdk8数据结构的改进
- 2017 ICM/MCM A题 管理赞比西河 Managing The Zambezi River
- scala 快速排序与合并排序
- 通过HTTP响应头让浏览器自动刷新
- 设计模式练习(15)——中介者模式
- Golang1.8新特性展望及2016发展回顾
- 网页title修改访问小图标
- dubbo spi原理解析
- Android音视频学习第4章:视频直播实现之推送视频篇
- 剑指offer-面试题30-最小的k个数
- 自定义 HorizontalScrollView
- Linux下select()系统调用
- hdu4417 Super Mario