23种设计模式之——中介者模式
2017-03-06 15:34
190 查看
前言
随着学习的不断深入,在重构代码的同时会考虑引用一些设计模式,来增加代码的可读性,健壮性,可维护性。并且尽可能的符合设计原则
中介者模式定义:中介者模式类MVP模式,V——->p<———M ,而M 和 V 是不直接进行交互的
类别:行为型
类图:
角色定义:
从类图中看,中介者模式有以下几部分组成:
抽象中介者(Mediator)角色:抽象中介者角色定义统一的接口用于各同事角色之间的通信。
具体中介者(Concrete Mediator)角色:具体中介者角色通过协调各同事角色实现协作行为,因此它
必须依赖于各个同事角色。
同事(Colleague)角色:每一个同事角色都知道中介者角色,而且与其他的同事角色通信的时候,一
定要通过中介者角色协作。每个同事类的行为分为两种:一种是同事本身的行为,比如改变对象本身的状
态,处理自己的行为等等,这种方法叫做自发行为(Self-Method),与其他的同事类或中介者没有任何的依
源码分析:
类图
1.
2.
3.
4.
模拟商品采购管理:Purchase 采购管理,Sale 销售管理,Stock 存储管理
可以看到里面耦合关系错综复杂,如何只是这几个类还好。那么后期进行添加新的职责类会造成代码很难维护。如果采用中介模式会怎么样呢?
这种类间互相关联的效果,看着就是噩梦
大家都是学计算机的,应该在上学的时候讲过一些网络的基本知识,还记得网络拓扑有几种类型吗?
总线型,环型,星型,(什么?想不起来?!惩罚一下自己去),我们来想想星型拓扑是什么什么样子的,
如下图:
上图销售管理进行改造:
类图更改为
接下篇:
中介者模式下 http://blog.csdn.net/o279642707/article/details/60609597
引用:
中介者设计模式: http://blog.csdn.net/zhengzhb/article/details/7430098
23中设计模式 pdf
随着学习的不断深入,在重构代码的同时会考虑引用一些设计模式,来增加代码的可读性,健壮性,可维护性。并且尽可能的符合设计原则
中介者模式定义:中介者模式类MVP模式,V——->p<———M ,而M 和 V 是不直接进行交互的
类别:行为型
类图:
角色定义:
从类图中看,中介者模式有以下几部分组成:
抽象中介者(Mediator)角色:抽象中介者角色定义统一的接口用于各同事角色之间的通信。
具体中介者(Concrete Mediator)角色:具体中介者角色通过协调各同事角色实现协作行为,因此它
必须依赖于各个同事角色。
同事(Colleague)角色:每一个同事角色都知道中介者角色,而且与其他的同事角色通信的时候,一
定要通过中介者角色协作。每个同事类的行为分为两种:一种是同事本身的行为,比如改变对象本身的状
态,处理自己的行为等等,这种方法叫做自发行为(Self-Method),与其他的同事类或中介者没有任何的依
源码分析:
类图
1.
package demo; public class Client { public static void main(String[] args) { // 采购人员采购电脑 System.out.println("------采购人员采购电脑--------"); Purchase purchase = new Purchase(); purchase.buyIBMcomputer(100); // 销售人员销售电脑 System.out.println("\n------销售人员销售电脑--------"); Sale sale = new Sale(); sale.sellIBMComputer(1); // 库房管理人员管理库存 System.out.println("\n------库房管理人员清库处理--------"); Stock stock = new Stock(); stock.clearStock(); } }
2.
package demo; /** * 采购管理 * * @author weichyang * */ public class Purchase { /** * 购买Ibm笔记本 * * @param number */ public void buyIBMcomputer(int number) { Stock stock = new Stock(); Sale sale = new Sale(); int saleStatus = sale.getSaleStatus(); if (saleStatus > 80) { System.out.println("采购IBM COMPUTER" + number + "台"); stock.increase(number); } else { int buyNumber = number / 2; System.out.println("采购IBM电脑" + buyNumber + "台"); stock.increase(buyNumber); } } /** * 停止购买 */ public void refuseBuyIBM() { System.out.println("不再采购IBM电脑"); } }
3.
package demo; import java.util.Random; /** * 销售管理 * * @author weichyang * */ public class Sale { /* * 正常销售ibm电脑 */ public void sellIBMComputer(int number) { Stock stock = new Stock(); Purchase purchase = new Purchase(); if (stock.getStockNumber() < number) { purchase.buyIBMcomputer(number); } System.out.println("销售IBM电脑" + number + "台"); stock.decreate(number); } /** * 销售产品状态 * * @return */ public int getSaleStatus() { Random random = new Random(System.currentTimeMillis()); int stateStatus = random.nextInt(100); System.out.println("IBM电脑的销售情况为:" + stateStatus); return stateStatus; } /** * 折价销售 */ public void offSale() { Stock stock = new Stock(); System.out.println("折价销售IBM电脑" + stock.getStockNumber() + "台"); } }
4.
package demo; import org.omg.CORBA.PUBLIC_MEMBER; /** * 存货管理 * * @author weichyang * */ public class Stock { public static int COMPUTER_NUMBER = 100; /** * 增加 * * @param number */ public void increase(int number) { COMPUTER_NUMBER = COMPUTER_NUMBER + number; System.out.println("库存增加数量" + COMPUTER_NUMBER); } /* * 减少图书 */ public void decreate(int number) { COMPUTER_NUMBER = COMPUTER_NUMBER - number; System.out.println("库存数量" + COMPUTER_NUMBER); } /** * 得到存储总量 * * @return */ public int getStockNumber() { return COMPUTER_NUMBER; } /** * 清库存 */ public void clearStock() { Purchase purchase = new Purchase(); Sale sale = new Sale(); System.out.println("清除存货数量为" + COMPUTER_NUMBER); sale.offSale(); purchase.refuseBuyIBM(); } }
模拟商品采购管理:Purchase 采购管理,Sale 销售管理,Stock 存储管理
可以看到里面耦合关系错综复杂,如何只是这几个类还好。那么后期进行添加新的职责类会造成代码很难维护。如果采用中介模式会怎么样呢?
这种类间互相关联的效果,看着就是噩梦
大家都是学计算机的,应该在上学的时候讲过一些网络的基本知识,还记得网络拓扑有几种类型吗?
总线型,环型,星型,(什么?想不起来?!惩罚一下自己去),我们来想想星型拓扑是什么什么样子的,
如下图:
上图销售管理进行改造:
类图更改为
接下篇:
中介者模式下 http://blog.csdn.net/o279642707/article/details/60609597
引用:
中介者设计模式: http://blog.csdn.net/zhengzhb/article/details/7430098
23中设计模式 pdf
相关文章推荐
- 23种设计模式(7):中介者模式
- GoF23种设计模式之行为型模式之中介者模式
- Java23种设计模式——中介者模式
- [置顶] 走穿java23种设计模式--18中介者模式详解
- 23种设计模式(7):中介者模式
- 23种设计模式(20)-中介者模式
- 设计模式(十五)------23种设计模式(7):中介者模式
- 23种设计模式-22-中介者模式
- 23种设计模式(16):中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式(7):中介者模式
- java23种设计模式(3)-中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式之中介者模式
- 【Unity3D与23种设计模式】中介者模式(Mediator)
- 23种设计模式(17)_行为型_中介者模式(Mediator Pattern)
- 23种设计模式之中介者模式
- 23种设计模式(8):中介者模式
- 23种设计模式(7):中介者模式
- 23种设计模式之中介者模式