`
heroboy0923
  • 浏览: 723 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java复杂对象的一种创建方式

 
阅读更多

在Java中我们经常会创建很多对象,以创建一个人为例,必需的属性是姓名和年龄,其他的诸如电话,地址等是非必须的,那么我们通常的做法是定义这样一个java bean这样:

public class People {

    private String  name;
    private Integer age;
    private String  gender;
    private String  address;
    private String  phone;

    public People(String name, Integer age){
        this.name = name;
        this.age = age;
    }

    public People(String name, Integer age, String gender, String address, String phone){
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.address = address;
        this.phone = phone;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

}

 

然后通过构造方法和set方法来生成所需要的实例:

People p = new People("zhang san", 12);
p.setAddress("China");
p.setPhone("1234567");

 

当对象比较复杂,属性比较多的时候,需要写很多构造方法,或者调用很多set方法.

 

一种改进的方法可以这样:

public class People {

    private String  name;
    private Integer age;
    private String  gender;
    private String  address;
    private String  phone;

    public People(PeopleBuilder builder){
        this.name = builder.name;
        this.age = builder.age;
        this.gender = builder.gender;
        this.address = builder.address;
        this.phone = builder.phone;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public static class PeopleBuilder {

        private String  name;
        private Integer age;
        private String  gender;
        private String  address;
        private String  phone;

        public PeopleBuilder(String name, Integer age){
            this.name = name;
            this.age = age;
        }

        public PeopleBuilder gender(String gender) {
            this.gender = gender;
            return this;
        }

        public PeopleBuilder address(String address) {
            this.address = address;
            return this;
        }

        public PeopleBuilder phone(String phone) {
            this.phone = phone;
            return this;
        }
        
        public People build() {
            People p = new People(this);
            return p;
        }

    }

}

 

生成People实例:

People p = new People.PeopleBuilder("li si", 32).address("USA").phone("12345").build();

 

分享到:
评论

相关推荐

    完成Java面向对象程序设计实验课的心得体会(1).doc

    可是面向对象只是我们解决问题一种思想,切不可 忘了问题本身,弄成为了面向对象而面向对象了!当然过程种少不了楼上一些前辈说的 思想和细节了。 耕具我多年的实践:面向对象包括两个思想: 从大往小想,从小往大做...

    Java面向对象程序设计(“方法”相关文档)共57张.pptx

    Java是一种完全面向对象的程序设计语言。它继承了C++的优点。Java降低了程序的复杂性,实现了代码的可重用性,提高了运行效率。 Java面向对象程序设计("方法"相关文档)共57张全文共57页,当前为第4页。 3.2 类的...

    Java编程思想(完整版)

    “尽管以C++为基础,但Java是一种更纯粹的面向对象程序设计语言”。 无论C++还是Java都属于杂合语言。但在Java中,设计者觉得这种杂合并不象在C++里那么重要。杂合语言允许采用多种编程风格;之所以说C++是一种杂合...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    对象中,所以,访问对象中的数据只有一种途径,那就是利用一个公开的接口。 实际上,封装在程序和数据之间设置了一道栅栏,它可以阻止一部分的设计错误,不至 于涉足应用程序其他部分的数据。 2.2.3 消息 ...

    Java示例:查找年龄最大的人员和计算平均年龄

    这个示例涵盖了列表操作、循环遍历、条件判断和数值计算等基本概念,展示了处理复杂问题的一种方式,具体的实现取决于你的需求和使用的框架。这只是一个简单的示例,仅供参考。根据你的具体需求,你可能需要进行更多...

    JAVA多媒体开发手册 JMF API

    处理器对应的接口是Processor,它一种播放器。在JMF API中,Processor接口继承了Player接口。 Processor对象除了支持支持Player对象支持的所有功能,还可以控制对于输入的多媒体数据流进行何种处理以及通过数据源向...

    java 编程入门思考

    5.2.4 protected:“友好的一种” 5.3 接口与实现 5.4 类访问 5.5 总结 5.6 练习 第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 ...

    Java基础入门及提高.pdf

    同人类任何语言一样,Java 为我们提供了一种表达思想的方式。如操作得当,同其他方式相比,随着问题变得愈大和愈复杂,这种表达方式的方便性和灵活性会显露无遗。不可将Java 简单想象成一系列特性的集合;如孤立地看...

    Java初学者入门教学

    5.2.4 protected:“友好的一种” 5.3 接口与实现 5.4 类访问 5.5 总结 5.6 练习 第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 ...

    java联想(中文)

    5.2.4 protected:“友好的一种” 5.3 接口与实现 5.4 类访问 5.5 总结 5.6 练习 第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 ...

    java 面试题 总结

    对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。 Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session ...

    超爽的自学课件(java)

    如何将Java中的所有东西都归为一种新数据类型(类),以及如何创建自己的类;函数、自变量以及返回值;名字的可见度以及使用来自其他库的组件;static关键字;注释和嵌入文档等等。 <br>(3) 第3章:控制程序流程...

    Java23种设计模式详解,看这一个就够了

    2、建造模式是将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 3、工厂方法模式定义一个创建对象的接口,让子类决定实例化那个类。 4、原型模式是用原型实例指定创建对象的种类,并且...

    JAVA 编程思想

    同人类任何语言一样,Java为我们提供了一种表达思想的方式。如操作得当,同其他方式相比,随着问题变得愈大和愈复杂,这种表达方式的方便性和灵活性会显露无遗。 不可将Java简单想象成一系列特性的集合;如孤立地看...

    JAVA_Thinking in Java

    5.2.4 protected:“友好的一种” 5.3 接口与实现 5.4 类访问 5.5 总结 5.6 练习 第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 ...

    超级有影响力霸气的Java面试题大全文档

     对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。  Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless ...

    Thinking in Java简体中文(全)

    5.2.4 protected:“友好的一种” 5.3 接口与实现 5.4 类访问 5.5 总结 5.6 练习 第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 ...

    java 设计模式资料

    Builder:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 Chain of Responsibility:为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条...

    JAVA设计模式23种

    23种设计模式 创建模式 设计模式之Singleton(单态/单件) 阎宏博士讲解:单例(Singleton)模式 保证一个类只有一个实例,并提供一个访问它的全局...用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

    Java语言的科学与艺术 斯坦福大学经典教材

     自1995年首次发布以来,Java编程语言作为一种教学语言变得日益重要,现在已经成为初级计算课程斯坦福大学的标准语言。Java语言可以让学生编写高度交互式程序,这充分激发了他们的学习兴趣。但Java语言很复杂,老师...

Global site tag (gtag.js) - Google Analytics