建造者模式,不可思议

本文介绍了Java中的Builder模式在Android开发中的应用,特别是链式调用的形式,以及作者分享的关于Android移动开发的学习资源和面试题经验,强调了系统学习的重要性。
摘要由CSDN通过智能技术生成

Builder builder = new ConcreteBuilder();

//构造者设置/构造产品的不同部分

builder.setPart1(“param1”);

builder.setPart2(“param2”);

builder.setPart3(“param3”);

//构造者返回一个产品对象

Product product = builder.buildProduct();

//使用产品对象

System.out.println(product.getPart1());

System.out.println(product.getPart2());

System.out.println(product.getPart3());

}

}

在上面的代码中,ConcreteBuilder的内部是首先创建好了一个Product对象,然后外部调用的时候会将各部分的参数设置给product对象,但是有时我们的Product构造函数是有必传参数的,就是必须传递参数才能构造产品对象,这时可以改造ConcreteBuilder如下:

public class ConcreteBuilder implements Builder {

private String part1;

private String part2;

private String part3;

@Override

public void setPart1(String param) {

this.part1 = param;

}

@Override

public void setPart2(String param) {

this.part2 = param;

}

@Override

public void setPart3(String param) {

this.part3 = param;

}

@Override

public Product buildProduct() {

return new Product(this.part1, this.part2, this.part3);

}

}

也就是说这种情况下是在buildProduct()被调用的时候才真正创建产品对象。

建造者模式在很多开源库中是很常见的模式,由于我是做Android开发的,在Android领域有很多开源库或者Android系统的api都是采用建造者模式,进一步,我们将Builder代码再稍微调整下:

public interface Builder {

public Builder setPart1(String param);

public Builder setPart2(String param);

public Builder setPart3(String param);

public Product buildProduct();

}

public class ConcreteBuilder implements Builder {

private String part1;

private String part2;

private String part3;

@Override

public ConcreteBuilder setPart1(String param) {

this.part1 = param;

return this;

}

@Override

public ConcreteBuilder setPart2(String param) {

this.part2 = param;

return this;

}

@Override

public ConcreteBuilder setPart3(String param) {

this.part3 = param;

return this;

}

@Override

public Product buildProduct() {

return new Product(this.part1, this.part2, this.part3);

}

}

public class Client {

public static void main(String[] args) {

//创建构造者

Builder builder = new ConcreteBuilder();

//构造者设置/构造产品的不同部分

Product product = builder.setPart1(“param1”)

.setPart2(“param2”)

.setPart3(“param3”)

.buildProduct();

//使用产品对象

System.out.println(product.getPart1());

System.out.println(product.getPart2());

System.out.println(product.getPart3());

}

}

如果你是做Android开发的同学,相信你已经看到了熟悉的代码,没错,就是链式调用的Builder模式,这种形式让书写更加方便,由于每次调用返回的是同一个对象,因此这样写也不违背迪米特法则。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

总结

【Android 详细知识点思维脑图(技能树)】

我个人是做Android开发,已经有十来年了,目前在某创业公司任职CTO兼系统架构师。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

详细整理在GitHub可以见;

Android架构视频+BAT面试专题PDF+学习笔记

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

以图片的形式给大家展示一小部分。

[外链图片转存中…(img-xuEk6ZY3-1711088676912)]

详细整理在GitHub可以见;

Android架构视频+BAT面试专题PDF+学习笔记

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

最后,赠与大家一句话,共勉!

  • 15
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值