java设计模式之抽象工厂模式
来源:互联网 发布:阅读刷量软件 编辑:程序博客网 时间:2024/06/08 02:01
java设计模式参考文章:
Java设计模式实战,23种设计模式介绍以及在Java中的实现,Java设计模式, Java经典设计模式之五大创建型模式
## 定义 ##
Mediator模式也叫中介者模式,Mediator模式是行为模式之一,在Mediator模式中,类之间的交互行为被统一放在Mediator的对象中,对象通过Mediator对象同其他对象交互,Mediator对象起着控制器的作用。
## 代码举例 ##
- 联合国转发各国声明, 调停各国关系:
- 各国向联合国安理会发送和接收消息, 安理会在各国间’适当地’转发请求以实现协作行为:
/** * @author bwx * @date 2017/11/28 * 抽象同事类 */public abstract class Country { protected Mediator mediator; private String name; public Country(Mediator mediator, String name) { this.mediator = mediator; this.name = name; } public String getName() { return name; } protected abstract void declare(String msg); protected abstract void receive(String msg);}/** * @author bwx * @date 2017/11/28 * 具体同事类 */public class USA extends Country { public USA(Mediator mediator, String name) { super(mediator, name); } protected void declare(String msg) { mediator.declare(this, msg); } protected void receive(String msg) { System.out.println("美国接收到: [" + msg + "]"); }}/** * @author bwx * @date 2017/11/28 */public class China extends Country { public China(Mediator mediator, String name) { super(mediator, name); } protected void declare(String msg) { mediator.declare(this, msg); } protected void receive(String msg) { System.out.println("中国接收到: [" + msg + "]"); }}/** * @author bwx * @date 2017/11/28 * 抽象中介者 */public abstract class Mediator { protected List<Country> countries = new LinkedList<Country>(); public void register(Country country) { countries.add(country); } public void remove(Country country) { countries.remove(country); } protected abstract void declare(Country country, String msg);}/** * @author bwx * @date 2017/11/28 * 具体中介者 */public class UnitedNations extends Mediator { /** * 联合国在中间作出调停 * @param country * @param msg */ protected void declare(Country country, String msg) { for (Country toCountry : countries) { if (!toCountry.equals(country)) { String name = country.getName(); toCountry.receive(name + "平和的说: " + msg); } } }}/** * @author bwx * @date 2017/11/28 * 中介者模式 */public class Main { public static void main(String[] args) { Mediator mediator = new UnitedNations(); Country usa = new USA(mediator, "美国"); Country china = new China(mediator, "中国"); mediator.register(usa); mediator.register(china); usa.declare("我要打伊拉克, 谁管我跟谁急!!!"); System.out.println("----------"); china.declare("我们强烈谴责!!!"); System.out.println("----------"); }}
## 优点 ##
- 两个类直接关联,是很好实现的,但如果不希望两个类直接发生交互,那么就需要使用中介者模式了。
具体请参考
阅读全文
0 0
- java设计模式之抽象工厂模式
- JAVA设计模式之抽象工厂模式
- Java设计模式之抽象工厂模式
- java设计模式之抽象工厂模式
- 【Java设计模式】之抽象工厂模式
- java设计模式 之 抽象工厂模式
- Java--设计模式之抽象工厂模式
- java设计模式之抽象工厂模式
- 设计模式之JAVA----抽象工厂模式
- java设计模式之抽象工厂模式
- java设计模式之抽象工厂模式
- JAVA设计模式之抽象工厂模式
- Java设计模式之抽象工厂模式
- 《Java设计模式》之抽象工厂模式
- Java设计模式之抽象工厂模式
- java设计模式之抽象工厂模式
- JAVA设计模式之抽象工厂模式
- Java设计模式之抽象工厂模式
- oracle数据库导入导出命令!
- Thread和JUC整理
- C# WinForm获取当前路径汇总
- WPF 使用MahApps.Metro UI库
- Python之random模块使用方法
- java设计模式之抽象工厂模式
- ubuntu软件安装、卸载、查看命令
- spring两种加载配置文件
- Python升级导致使用yum报错
- ThreadLocal使用实例
- PhoneInterfaceManager
- 进程基础
- Android retrofit封装(1)
- 【安全牛学习笔记】SQLMAP自动注入-ENUMERATION、BRUTE FORCE、UDF IN