Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
java设计模式建造者模式_我的世界JAVA开创造,希望能够帮助你!!!。
创建者模式又叫建造者模式,是将一个复杂的对象的构建与它的表示分离,使
得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。
在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。
用户只需要给出指定复杂对象的类型和内容;
建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来)
工厂(建造者模式):负责制造汽车(组装过>程和细节在工厂内)
汽车购买者(用户):你只需要说出你需要的>型号(对象的类型和内容),然后直接购买就可>>以使用了
(不需要知道汽车是怎么组装的(车轮、车门、>发动机、方向盘等等))
package com.example.designmode.builderpattern; /** * <h3>design-mode</h3> * <p>build模式示例类</p> * * @author : ZhangYuJie * @date : 2022-01-16 22:11 **/ public class NewComputer {
private String cpu; private String screen; private String memory; private String mainboard; public NewComputer() {
throw new RuntimeException("can’t init"); } private NewComputer(Builder builder) {
cpu = builder.cpu; screen = builder.screen; memory = builder.memory; mainboard = builder.mainboard; } public static final class Builder {
private String cpu; private String screen; private String memory; private String mainboard; public Builder() {
} public Builder cpu(String val) {
cpu = val; return this; } public Builder screen(String val) {
screen = val; return this; } public Builder memory(String val) {
memory = val; return this; } public Builder mainboard(String val) {
mainboard = val; return this; } public NewComputer build() {
return new NewComputer(this);} } }
package com.example.designmode.builderpattern; import lombok.Data; /** * <h3>design-mode</h3> * <p>非build模式示例类</p> * * @author : ZhangYuJie * @date : 2022-01-16 22:10 **/ @Data public class Computer {
private String cpu; private String screen; private String memory; private String mainboard; public Computer(String cpu, String screen, String memory, String mainboard) {
this.cpu = cpu; this.screen = screen; this.memory = memory; this.mainboard = mainboard; } }
package com.example.designmode.builderpattern; /** * <h3>design-mode</h3> * <p>客户端使用</p> * * @author : ZhangYuJie * @date : 2022-01-16 22:09 **/ public class Click {
public static void main(String[] args) {
// 非 Builder 模式 Computer computer = new Computer("cpu", "screen", "memory", "mainboard"); // Builder 模式 NewComputer newComputer = new NewComputer.Builder() .cpu("cpu") .screen("screen") .memory("memory") .mainboard("mainboard") .build(); } }
上面的示例代码只是传入四个参数,如果参数是十四个甚至更多,builder 模式的优势将会更加明显,传递参数更加灵活,代码具有更高的可读性
一般的套路:优点是比较简单,开发效率高,缺点是如果参数真的很多的话鬼知道每个对应的是什么意思啊。
Builder模式:优点是可以将构造器的setter方法名取成类似注释的方式,这样我们可以很清晰的知道刚才究竟设置的什么值,可读性较高,缺点是比较冗长。
代码地址
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。