每天进步一点点,好记性不如烂笔头

导航

建造者模式的使用场景

建造者模式

  建造者模式,英文名builder_pattern,抛开所有文献对建造者模式的定义,我认为建造者模式是当我们现有的资源无法满足我们的业务的时候,我们进行的一个统一的建造或者改造的一个过程,或者说是一个代码的封装,我们可以叫它为建造者模式。

    我曾经做过一个这样的模块,一个业务系统,数据产生在子系统A里面,同时子系统B需要A所产生的数据,但是需要经过"改造"和"加工",我们打个比方,假如A得到了一个关于交易的情况的一个Json类型的数据包,给B的时候也许有一些属性和字段不需要,或者A没有的而B却需要进行自主的构建,其实假如我们只有这一项的话,完全不需要使用到设计模式,但是假如A和B之间需要交换的数据种类非常的多,并且有可能C系统也会参与进来,甚至D系统也来了。。。这个时候我们不得不想一个统一的办法来管理它们,没错,就是建造者模式。上代码,我们先使用截图的方式来展示,稍后给网盘链接下载。

  1) 建造者模式包的结构 

    

   2) 创建AMessage A系统中的实体类

    

     3) 创建BMessage B系统中的实体类

     

 

    4) 创建抽象构建者

    

 

     5) 创建具体构建者

      

 

 

    6)创建导演者类,用于构造的一个指挥,get和set具体的bean对象

      

     7) 创建测试类

      

      8) 验证结果

        

    通过以上的操作,我们可以只需要一个A的对象就可以构造出B的对象,而所有的构造过程都可以在这里面完成,完全满足工程的高内聚低耦合的思想,以及我们的构建过程类的结构不需要改变,我们只需添加具体的操作和新的构建过程即可完成功能的实现,完全符合开放封闭原则。当然有同学会说,你这样能保证数据的同步么?即A的数据产生了时时会传送到B那边去吗?这里的话实现的方法会有很多,如果对同步性不高的业务操作来说,我们甚至只需要一个跨域请求都可以完成这个,或者使用面向切面编程在A数据产生的过程中,把构造B的这个操作封装成一个切面来实现,如果对同步性要求很高的话,我们使用socket网编套接字实现系统之间的时事通讯或者使用分布式同步技术来完成,这些技术都必须经过架构设计来实现,就不一一赘述了。我们旨在于理解这个简单的设计模式,加深对面向对象的理解,早日脱离"面向过程"的java。

小demo网盘下载地址:

 http://pan.baidu.com/s/1hrAYMWG#list/path=%2F

posted on 2017-05-20 21:30  yujiwei  阅读(7068)  评论(2编辑  收藏  举报