千家信息网

Java建造者模式实例分析

发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,今天小编给大家分享一下Java建造者模式实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了
千家信息网最后更新 2024年11月19日Java建造者模式实例分析

今天小编给大家分享一下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,并提供链式调用的方法。

二、实现方式

1、引入依赖
    org.projectlombok    lombok    true

Lombok 需要在 IDEA 中安装插件,具体方法,请百度。

2、实现
package com.asurplus.common.builder.style2;import lombok.Builder;import lombok.Data;/** * get set toString 方法注解 */@Data/** * 建造者模式注解 */@Builderpublic 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建造者模式实例分析"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

0