Java设计模式之构建模式(builder pattern)例子

一,Builder Pattern

        builder模式也叫建造者模式,builder模式的作用将一个复杂对象的构建与他的表示分离,使用者可以一步一步的在不同方法中构建一个比较复杂的对象。

二,实践代码

完整代码

 

public class People {
	private String id ;
	private String name ;
	private Integer age ;
	
	public People(String id, String name, Integer age) {
	    this.id = id;
	    this.name = name;
	    this.age = age;
	}
	
	public People(Builder builder) {
	    this.id = builder.id;
	    this.name = builder.name;
	    this.age = builder.age;
	}
	
	public String getId() {
		return id;
	}
	public String getName() {
		return name;
	}

	public Integer getAge() {
		return age;
	}

	@Override
	public String toString() {
	    return "People [id=" + id + ", name=" + name + ", age=" + age + "]";
	}

	public static Builder builder(){
		return new Builder();
	}
	
	public static class Builder{
		private String id ;
		private String name ;
		private Integer age ;
		

		public Builder id(String id) {
			this.id = id ;
			return this;
		}
 
		public Builder name(String name) {
			this.name = name ;
			return this ;
		}
		
		public Builder age(Integer age) {
			this.age = age ; 
			return this;
		}
		
		public People build() {
			return new People(id, name, age);
		}
 
		public People build2() {
			return new People(this);
		}
	}
}

使用代码

public static void main(String[] args) {
	People people = People.builder()
    		.id("11")
    		.name("小明")
    		.age(17)
    		.build();
	System.out.println(people);
}

执行结果

People [id=11, name=小明, age=17]

实践代码二

利用lombok插件自动生成Builder。

Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。

import lombok.Builder;

@Builder
public class People {
	private String id ;
	private String name ;
	private Integer age ;
	
	public People(String id, String name, Integer age) {
	    this.id = id;
	    this.name = name;
	    this.age = age;
	}
	public String getId() {
		return id;
	}
	public String getName() {
		return name;
	}

	public Integer getAge() {
		return age;
	}

	@Override
	public String toString() {
	    return "People [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
}

Maven 依赖

        <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.10</version>
</dependency>

如果是Eclipse 开发环境, 要加插件的。

Eclipse安装lombok插件 - boonya - 博客园

猜你喜欢

转载自blog.csdn.net/keeppractice/article/details/125413002