建造者模式

打印 上一主题 下一主题

主题 1029|帖子 1029|积分 3087

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 为什么要用建造者模式,例如Person p=new Person(10个参数),如许会很头疼,参数一多,无法分辨
灵活性:可以按需设置,无需界说多个构造方法
可读性:链式调用使代码简介名了
扩展性:如果增长了新属性,只需要在Builder中添加相应的方法
   public class Person {
    // 属性
    private String name;
    private int age;
    private String email;
      // 私有构造函数,防止直接实例化
    private Person(Builder builder) {
        this.name = builder.name;
        this.age = builder.age;
        this.email = builder.email;
    }
      // Getter 方法
    public String getName() {
        return name;
    }
      public int getAge() {
        return age;
    }
      public String getEmail() {
        return email;
    }
      // 静态内部类 Builder
    public static class Builder {
        private String name;
        private int age;
        private String email;
          // 设置 name 并返回 Builder 对象
        public Builder setName(String name) {
            this.name = name;
            return this;//this指代当前Builder对象
        }
          // 设置 age 并返回 Builder 对象
        public Builder setAge(int age) {
            this.age = age;
            return this;
        }
          // 设置 email 并返回 Builder 对象
        public Builder setEmail(String email) {
            this.email = email;
            return this;
        }
          // 构建 Person 对象
        public Person build() {
            return new Person(this);
        }
    }
      @Override
    public String toString() {
        return "erson{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", email='" + email + '\'' +
                '}';
    }
}
 
  
使用方式
   public class Main {
    public static void main(String[] args) {
        // 使用建造者模式构造 Person 对象
        Person person = new Person.Builder()
                .setName("John Doe")
                .setAge(30)
                .setEmail("john.doe@example.com")
                .build();
          // 输出 Person 对象
        System.out.println(person);
    }
}
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

愛在花開的季節

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表