java 创建者设计模式_Java设计模式之创建者模式分享热爱编程,程序人生

PS:今天的23中设计模式中的创建者方式,至此告一段落。我今天带来的技术分享为创建者模式以及原型模式。当然在Java中这两种方式很常见,只不过我们写的次数确实有点低而已,但是这不是我不学它的借口!!!

创建者模式

无构建者模式代码示例:需求创建一个摩托车对象 并且使其开始运行。

发动机代码构建:

97a155fcd79a88ad2beae4db2c10b657.png

发动机代码构键

车架代码实例:

647ca39debf0671698646071343d8e10.png

车架代码实例

轮胎机代码示例:

ad37ef2b2a28d38d1c829ab46410a939.png

轮胎机代码示

摩托车对象实体类:

045144d100017c199484017d07683468.png

摩托车对象实体类

测试类:

49eff235e01929002fdd01e05f563fc9.png

测试类

总结:摩托车对象时一个大对象:构建过程中可能需要很多其他对象的使用,比如:车架、发动机、轮胎 所以如果每次摩托车对象的创建,都需要其他对象 并且调用者都需要知道摩托车的具体细节,这样对于调 用者来说是很痛苦的。所以在这个基础之上,我们希望 是否可以将调用者和创建者进行解耦。

作用:

当一个类的内部数据过于复杂的时候(通常是负责持有数据的类,比如Config、VO、PO、Entity...),要创建的话可能就需要了解这个类的内部结构,还有这些东西是怎么组织装配等一大坨乱七八糟的东西,这个时候就会增加学习成本而且会很混乱,这个时候就想啊想一种什么法子来管理一下这个类中的数据呢,怎么在创建的时候让它按部就班的来,并且代码可读性很好别让我看花了眼啊,我要的东西也能都很好设置进来,这就是Builder模式的应用场景,Builder模式可以将一个类的构建和表示进行分离。

常见的使用场景:构建比较复杂的产品。

StringBuilder DomBuilder SaxBuilder

Sql中的PreparedStatement

构建者类图总结

80d0a282dcce6f5b65a1a990f8bc5308.png

类图总结

总结:以上,调用者无需知道具体的构建者中的具体构建顺序,调用者专注于自己的业务即可。实现了解耦。但是这里最重要的就是构建顺序,不同的builder’可以构建不同的实例对象

案例测试:需求构建一个对应品牌的手机对象。调用者无需知道具体的对象的调用细则。

手机实体类构建代码:

0586e8a0bf152e0e95cd964916ac5712.png

实体手机类

构建者接口以及对应实现 :

758d21954a1a78e68810ec4072b5e8dd.png

构建者接口以及对应实现

装配接口以及对应实现:

2075ab17d7c43432e6ed1ea8da1f6dc5.png

装配接口以及对应实现

测试类:

437908b6bc3b6036c05880d89a170e20.png

测试类

总结:以及需工厂的区别

a、将一个对象底层的依赖 全部交由builder执行,具体的建造顺序,由builder指定。然后由director负责完成装配过程。调用者无需知道底层的具体顺序以及装配过程。如果不满足需要则直接重新创建builder,完成具体的建造顺序

b、建造者模式关注与对象创建的具体过程,而工厂则关注于最后创建对象的结果。

c、如果构建出来的对象差异较大,需要多个构建者才能完成。所以会借助到单例或者工厂一起使用。

拓展:

需求,构建类似于一个对象,但是对象构建时,属性很多。有可能忘记属性,或者属性没写全。那么当前这个对象就无法创建,通过创建者模式解决问题。

实现代码:

f37dc4a274fb90bbdf75051d54856f83.png

实现代码

测试类:

30ec64893fc584f5054ea0d71b601ad8.png

测试类

PS:大家有什么想要分享的内容!可以在评论下方留言!!!

更多行业资讯请关注:百战程序员,喜欢请分享转发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值