今天小编给大家分享一下Java建造者模式实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
1.建造者独立,易扩展。
2.便于控制细节风险。
1.产品必须有共同点,范围有限制。
2.如内部变化复杂,会有很多的建造类。
1.需要生成的对象具有复杂的内部结构。
2.需要生成的对象内部属性本身相互依赖。
package com.asurplus.common.builder.style1;
public class UserInfo {
private String name;
private int age;
/**
* 创建一个新的建造者
*
* @return
*/
public static UserInfoBuilder builder() {
return new UserInfoBuilder();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "UserInfo{" +
"name='" + name +
", age=" + age +
'}';
}
/**
* 建造者内部类
*/
public static class UserInfoBuilder {
private String name;
private int age;
public UserInfoBuilder name(String name) {
this.name = name;
return this;
}
public UserInfoBuilder age(int age) {
this.age = age;
return this;
}
/**
* 创建一个新的实例对象并赋值
*
* @return
*/
public UserInfo build() {
UserInfo userInfo = new UserInfo();
userInfo.setName(this.name);
userInfo.setAge(this.age);
return userInfo;
}
}
}
我们定义了一个 UserInfo 类,有 name,age 两个属性,还定义了一个静态内部类 UserInfoBuilder,帮助我们建造 UserInfo,并提供链式调用的方法。
<!-- lombok插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
Lombok 需要在 IDEA 中安装插件,具体方法,请百度。
package com.asurplus.common.builder.style2;
import lombok.Builder;
import lombok.Data;
/**
* get set toString 方法注解
*/
@Data
/**
* 建造者模式注解
*/
@Builder
public class UserInfo2 {
private String name;
private int age;
}
基于 Lombok 的注解,我们省略了大部分代码,但是具体的实现方式和我们的方式一是一模一样的,调用方法也是一样的。
package com.asurplus.common.builder;
import com.asurplus.common.builder.style1.UserInfo;
import com.asurplus.common.builder.style2.UserInfo2;
/**
* 建造者模式
*/
public class TestMain {
public static void main(String[] args) {
// 手写的方式
UserInfo userInfo = UserInfo.builder().name("张三").age(20).build();
System.out.println(userInfo);
// 注解的方式
UserInfo2 userInfo2 = UserInfo2.builder().name("李四").age(30).build();
System.out.println(userInfo2);
}
}
输出结果
以上就是“Java建造者模式实例分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。