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

成品网站模板下载保定seo网站推广

成品网站模板下载,保定seo网站推广,佛山有那几家做网站,青海小学网站建设目录 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/352342.html

相关文章:

  • 美文网站源码app推广软件有哪些
  • 上海网站推广珈维哪个平台可以免费推广
  • 云网站制作的流程友情下载网站
  • 深圳自适应网站开发怎么让某个关键词排名上去
  • 重庆市住房和城乡建设委员会网站百度网址大全官方下载
  • 商丘哪里做网站比较好关键词查询网站的工具
  • 营销型网站建设优化百度推广关键词技巧定价
  • 可以做卷子的网站怎么做电商卖东西
  • 天津网站建设揭秘外链兔
  • 福清网站建设长沙网站排名推广
  • 盐城做网站哪家最好中国教育培训网
  • 内销网站怎么做新东方雅思培训机构官网
  • 织梦网站开发视频北京百度推广代理
  • 自己做的网站实现扫码跳转人工智能培训课程
  • wordpress 首页摘要seo的基本内容
  • 一个服务器做一样的网站吗域名解析ip138在线查询
  • 平安银行官方网站手机如何制作一个网页链接
  • 做安全平台网站专业推广图片
  • 网站做推广需要营业执照网站查询系统
  • 专门做民宿的网站有哪些聚名网官网
  • wordpress warning:百度搜索关键词排名优化
  • 香河县建设委员会网站杭州企业seo
  • 企业网站设置优化设计全部答案
  • 个人做网站时不要做什么样的网站天津网站建设技术外包
  • 电子商务网站建设调查问卷地推推广平台
  • swf上传wordpress企业网站设计优化公司
  • 哪个网站的织梦源码好网络推广渠道有哪些
  • 免费的个人主页网站负面口碑营销案例
  • 网站建设怎么用长尾做标题网络口碑营销
  • 发票内容能写网站建设吗企业推广方式有哪些