当前位置: 首页 > wzjs >正文

河北建设执业信息网宁德seo公司

河北建设执业信息网,宁德seo公司,公司网站建设重点内容,艺术字logo设计在线生成目录 1. 概念 2. 代码实现 3. 应用场景 建造者模式(Builder)是创建型设计模式的最后一个,但是确实在平时开发过程中或者阅读源码过程中是十分常见的,难度在我来看是比较适中的,理解起来的也比较轻松,并且平时我们在编码过程中也…

       

目录

1. 概念

2. 代码实现

3. 应用场景


        建造者模式(Builder)是创建型设计模式的最后一个,但是确实在平时开发过程中或者阅读源码过程中是十分常见的,难度在我来看是比较适中的,理解起来的也比较轻松,并且平时我们在编码过程中也可以灵活的运用它。

1. 概念

        建造者模式允许你通过一步一步构建复杂对象的过程来创建不同的表示。这种模式将复杂的构造逻辑封装在单独的类中(即建造者),从而使主类可以专注其自身的职责。以下是建造者模式的一些关键点:

  • 分离复杂对象的构建过程:将复杂对象的构建过程与它的表示分离
  • 控制对象的创建步骤:允许以不同的顺序或方式构建对象
  • 避免构造函数参数过多:当一个类有多个构造参数时,使用建造者模式可以使代码更清晰

2. 代码实现

这里我们以建造一个Phone类为例,Phone中有cpu、mem、disk、camera属性(如上述类图所示),那么我们创建对象时,其实对于属性的构建顺序是没有要求的,同时它的属性也较多,我们就可以使用建造类对其的创建方式进行分离。

AbstractPhoneBuilder类(注意,这里的抽象类只是为了更规范,其实你可能发现有没有此类都不会影响实现)

/*** 抽象建造者*/
public abstract class AbstractBuilder  {Phone phone;abstract AbstractBuilder customCpu(String cpu);abstract AbstractBuilder customMem(String mem);abstract AbstractBuilder customDisk(String disk);abstract AbstractBuilder customCam(String cam);Phone getProduct(){return phone;}}

Phone类

public class Phone {protected String cpu;protected String mem;protected String disk;protected String cam;@Overridepublic String toString() {return "Phone{" +"cpu='" + cpu + '\'' +", mem='" + mem + '\'' +", disk='" + disk + '\'' +", cam='" + cam + '\'' +'}';}public String getCpu() {return cpu;}public String getMem() {return mem;}public String getDisk() {return disk;}public String getCam() {return cam;}
}

XiaoMiBuilder类

public class XiaomiBuilder  extends AbstractBuilder{public XiaomiBuilder(){phone = Phone.builder().build();}/**** @param cpu*/@OverrideAbstractBuilder customCpu(String cpu) {phone.cpu = cpu;return this;}@OverrideAbstractBuilder customMem(String mem) {phone.mem = mem;return this;}@OverrideAbstractBuilder customDisk(String disk) {phone.disk = disk;return this;}@OverrideAbstractBuilder customCam(String cam) {phone.cam = cam;return this;}
}

MainTest类

public class MainTest {public static void main(String[] args) {AbstractBuilder builder = new XiaomiBuilder();//建造这个手机
//        builder.customMem("16G");
//        builder.customDisk("1T");
//        builder.customCam("2亿");
//        builder.customCpu("骁龙8个8");//链式建造者 SwaggerPhone phone = builder.customCpu("骁龙8个8").customCam("2亿").customDisk("1T").customMem("16G").getProduct();System.out.println(phone);Phone build = Phone.builder().cpu("1").mem("2").cam("3").disk("4").build();System.out.println(build);}
}

        以上我们可以看到,我们其实实现了一种链式调用的方式,这样方便开发者可以快速的通过层层构建直接创建出我们的对象,其实在一些源码或者开源的项目中,大家都采取了这种方式来进行调用,大大简化了代码的复杂度。

        同时,其实如果你作为一位经验丰富的开发者,你会知道在lombok这个插件中,我们可以在实体类上加入@Builder注解后,lombok就会自动为我们添加此类的建造者的创建方式,这样在一些简单的业务场景下,大大提高了开发人员的效率。

3. 应用场景

        建造者模式我开篇就提到了其在源码的常见程度,所以我列举一些常见的应用:

  • StringBuilder类
  • Swagger中的ApiBuilder
  • 阿里云或者腾讯云中第三方的请求构建等
  • ...
http://www.dtcms.com/wzjs/496390.html

相关文章:

  • 企业网站案例建设要求软文推广什么意思
  • 珠海服务好的网站建设长沙官网seo服务
  • 做音乐网站要多少钱百度app下载安装 官方
  • wordpress github评论网站关键词优化怎么弄
  • 虹口专业网站建设公司今天今日新闻头条最新消息
  • 网站如何盈利搜索引擎优化免费
  • 商城网站后台管理操作长春seo网站排名
  • 微网站和网站同步像素河南网络推广那家好
  • SEO案例网站建设企业网站建设方案书
  • 做汽车特卖会的网站宁波seo外包方案
  • 双流区规划局建设局网站亚马逊关键词搜索器
  • 网络营销工具优缺点seo是什么意思为什么要做seo
  • 郑州专业网站建设湖南正规seo优化
  • 供应链管理软件汕头seo代理商
  • ps广告设计步骤seo优化案例
  • 长春谁家做网站介绍产品的营销推文
  • asp医院网站源码济源网络推广
  • 建立网站的原因百度竞价推广自己可以做吗
  • 网站开发使用哪些开发语言磁力吧ciliba
  • 浦东网站开发培训班产品推广步骤
  • 网站底部加备案号行业网站有哪些平台
  • wap文字游戏搭建教程短视频seo优化
  • 网站如何建设名称企业培训机构有哪些
  • 淮北做网站发布软文广告
  • 怎么在网站添加关键词腾讯推广一次广告多少钱
  • 广元城乡建设部网站首页软文有哪些
  • 泉州网站提升排名seo网络推广报价
  • 手机小游戏网站关键词首页排名代做
  • 乌克兰网站服务器制作网站费用
  • 南山网站设计多少钱百度提交入口网站网址