Java创建型模式之建造者模式怎么实现(java,开发技术)

时间:2024-03-29 18:43:02 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

一.介绍

建造者模式(Builder Pattern)属于创建型模式。如果一个对象具有复杂的内部结构或者内部属性本身相互依赖(有顺序要求),甚至对象中的某些属性的创建也有一个很复杂的过程,就可以使用建造者模式

二.UML类图

Java创建型模式之建造者模式怎么实现

三.具体代码

业务代码

publicclassProduct{privateStringpart1;privateStringpart2;publicProduct(Stringpart1,Stringpart2){this.part1=part1;this.part2=part2;}@OverridepublicStringtoString(){return"Product{"+"part1='"+part1+'\''+",part2='"+part2+'\''+'}';}}//控制每个部件的具体创建interfaceBuilder{voidbuildPart1(Stringpart1);voidbuildPart2(Stringpart2);Productbuild();}classChinaBuilderimplementsBuilder{privateStringpart1;privateStringpart2;@OverridepublicvoidbuildPart1(Stringpart1){this.part1="国产"+part1;}@OverridepublicvoidbuildPart2(Stringpart2){this.part2="国产"+part2;}@OverridepublicProductbuild(){returnnewProduct(part1,part2);}}//控制组装部件的顺序classDirector{privateBuilderbuilder;publicDirector(Builderbuilder){this.builder=builder;}publicProductconstruct(Stringpart1,Stringpart2){builder.buildPart1(part1);builder.buildPart2(part2);returnbuilder.build();}}

测试代码

publicclassBuilderTest{publicstaticvoidmain(String[]args){Directordirector=newDirector(newChinaBuilder());Productproduct=director.construct("传感器","芯片");System.out.println(product);//Product{part1='国产传感器',part2='国产芯片'}}}

四.lombok的@Builder注解(拓展)

我们先以静态内部类的方式实现简单场景下的建造者模式(以优雅的链式调用代替set)

业务代码

publicclassProduct{privateStringpart1;privateStringpart2;publicProduct(Stringpart1,Stringpart2){this.part1=part1;this.part2=part2;}@OverridepublicStringtoString(){return"Product{"+"part1='"+part1+'\''+",part2='"+part2+'\''+'}';}staticclassBuilder{privateStringpart1;privateStringpart2;publicBuilderpart1(Stringpart1){this.part1=part1;returnthis;}publicBuilderpart2(Stringpart2){this.part2=part2;returnthis;}publicProductbuild(){returnnewProduct(part1,part2);}}}

测试类

publicclassProductTest{publicstaticvoidmain(String[]args){Productproduct=newProduct.Builder().part1("传感器").part2("芯片").build();System.out.println(product);//Product{part1='传感器',part2='芯片'}}}

下面看看lombok的@Builder注解的实现

业务代码

@BuilderpublicclassProduct{privateStringpart1;privateStringpart2;}

在IDEA中打开Product.class文件,可以看出实际就是使用的简单场景的建造者模式

////Sourcecoderecreatedfroma.classfilebyIntelliJIDEA//(poweredbyFernFlowerdecompiler)//packagecom.designpattern.create.builder.lombok;publicclassProduct{privateStringpart1;privateStringpart2;Product(Stringpart1,Stringpart2){this.part1=part1;this.part2=part2;}publicstaticProduct.ProductBuilderbuilder(){returnnewProduct.ProductBuilder();}publicstaticclassProductBuilder{privateStringpart1;privateStringpart2;ProductBuilder(){}publicProduct.ProductBuilderpart1(Stringpart1){this.part1=part1;returnthis;}publicProduct.ProductBuilderpart2(Stringpart2){this.part2=part2;returnthis;}publicProductbuild(){returnnewProduct(this.part1,this.part2);}publicStringtoString(){return"Product.ProductBuilder(part1="+this.part1+",part2="+this.part2+")";}}}

五.在Spring中的应用

org.springframework.web.servlet.mvc.method.RequestMappingInfo.DefaultBuilder

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Java创建型模式之建造者模式怎么实现的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:React组件如何使用下一篇:

5 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18