打字猴:1.700462281e+09
1700462281
1700462282
1700462283 图14-3 扩展后的进销存示意图
1700462284
1700462285 这是一个蜘蛛网的结构,别说是编写程序了,就是给人看估计也能让一大批人昏倒!每个对象都需要和其他几个对象交流,对象越多,每个对象要交流的成本也就越大了,只是维护这些对象的交流就能让一大批程序员望而却步!从这方面来说,我们已经发现设计的缺陷了,作为一个架构师,发现缺陷就要想办法修改。
1700462286
1700462287 大家都学过网络的基本知识,网络拓扑有三种类型:总线型、环型、星型。星型网络拓扑如图14-4所示。
1700462288
1700462289
1700462290
1700462291
1700462292 图14-4 星型网络拓扑
1700462293
1700462294 在星型网络拓扑中,每个计算机通过交换机和其他计算机进行数据交换,各个计算机之间并没有直接出现交互的情况。这种结构简单,而且稳定,只要中间那个交换机不瘫痪,整个网络就不会发生大的故障。公司和网吧一般都采用星型网络。我们是不是可以把这种星型结构引入到我们的设计中呢?我们先画一个示意图,如图14-5所示。
1700462295
1700462296
1700462297
1700462298
1700462299 图14-5 修改后的进销存示意图
1700462300
1700462301 加入了一个中介者作为三个模块的交流核心,每个模块之间不再相互交流,要交流就通过中介者进行。每个模块只负责自己的业务逻辑,不属于自己的则丢给中介者来处理,简化了各模块之间的耦合关系,类图如图14-6所示。
1700462302
1700462303
1700462304
1700462305
1700462306 图14-6 修改后的进销存类图
1700462307
1700462308 建立了两个抽象类AbstractMediator和AbstractColeague,每个对象只是与中介者Mediator之间产生依赖,与其他对象之间没有直接关系,AbstractMediator的作用是实现中介者的抽象定义,定义了一个抽象方法execute,如代码清单14-5所示。
1700462309
1700462310 代码清单14-5 抽象中介者
1700462311
1700462312 public abstract class AbstractMediator{
1700462313
1700462314 protected Purchase purchase;
1700462315
1700462316 protected Sale sale;
1700462317
1700462318 protected Stock stock;
1700462319
1700462320 //构造函数
1700462321
1700462322 public AbstractMediator(){
1700462323
1700462324 purchase=new Purchase(this);
1700462325
1700462326 sale=new Sale(this);
1700462327
1700462328 stock=new Stock(this);
1700462329
1700462330 }
[ 上一页 ]  [ :1.700462281e+09 ]  [ 下一页 ]