`
zk_chs
  • 浏览: 215613 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java通过Builder创建实例

阅读更多

昨晚做测试的时候需要一个测试对象,于是创建了一个Person,如下:

public class Person implements Serializable{
    private final int age;
    private final String name;
    private int weight;
    private String sex;
    .....
}

 可见这个对象的域有多么的多,如果在构造函数中进行赋值,或者实例化后通过setter赋值,都是件十分麻烦的事,于是便想到了Effective Java中通过创建内部类Builder来构造实例:

 

public static class Builder {
	
	// 必须
	private final int age;
	private final String name;
	
	// 非必须
	private String sex = "";
	private int weight = 0;
	
	public Builder (int age, String name){
		this.age = age;
		this.name = name;
	}
	
	public Builder sex (String val){
		sex = val;
		return this;
	}
	public Builder weight (int val){
		weight = val;
		return this;
	}
	
	public Person build (){
		return new Person(this);
	}
	
}

 

这样一来就能很方便到选择需要的参数进行赋值了:

Person person = new Person.Builder(20, "张三").sex("男").weight(140).build();

 

很清晰吧,下面是完整代码:

public class Person implements Serializable{

	private static final long serialVersionUID = 7037233268790765128L;
	
	private final int age;
	private final String name;
	private final String sex;
	private final int weight;
	
	private Person (Builder builder){
		age = builder.age;
		name = builder.name;
		sex = builder.sex;
		weight = builder.weight;
	}

	public static class Builder {
		
		// 必须
		private final int age;
		private final String name;
		
		// 非必须
		private String sex = "";
		private int weight = 0;
		
		public Builder (int age, String name){
			this.age = age;
			this.name = name;
		}
		
		public Builder sex (String val){
			sex = val;
			return this;
		}
		public Builder weight (int val){
			weight = val;
			return this;
		}
		
		public Person build (){
			return new Person(this);
		}
		
	}
	

	public int getAge() {
		return age;
	}

	public String getName() {
		return name;
	}

	public String getSex() {
		return sex;
	}

	public int getWeight() {
		return weight;
	}

	@Override
	public String toString() {
		return "Person [age=" + age + ", name=" + name + ", sex=" + sex
				+ ", weight=" + weight + "]";
	}
	
}

 

 

分享到:
评论

相关推荐

    javabuilder魔方实例代码

    【JavaBuilder魔方实例代码】是基于Matlab Builder for JA技术的一个应用示例,它展示了如何将Matlab程序集成到Java环境中,以便在Java应用程序中利用Matlab的强大计算能力和图像处理功能。Matlab Builder for JA是...

    powerbuilder8.0实例教程源代码

    总的来说,"PowerBuilder 8.0实例教程源代码"是学习PowerBuilder 8.0的宝贵资源,通过深入研究这些源代码,不仅可以掌握工具的使用,还能提升编程思维和软件开发的整体能力。对于初学者和有经验的开发者来说,都是极...

    23种设计模式的java实现-Builder

    在这个例子中,`Client`类创建了一个`SportsCarBuilder`实例,并通过`CarDirector`构建了一辆跑车。`SportsCarBuilder`负责填充`Car`对象的各个部分,而`CarDirector`则协调这个过程,确保所有部分都被正确地构建。 ...

    Java ME 移动开发实例精讲

    通过《Java ME 移动开发实例精讲》提供的视频教程和源代码,你可以逐步学习并实践这些知识,从而掌握移动应用开发的全过程。郭克华的讲解应该会详细解析每个步骤,并给出实用的技巧和最佳实践。对于想要进入移动开发...

    PB调用JAVA WEBSERVICE实例

    标题中的“PB调用JAVA WEBSERVICE实例”指的是使用PowerBuilder(PB)应用程序调用由Java编写的Web服务。在企业级应用开发中,不同语言之间的互操作性是非常重要的,而Web服务提供了一种标准的方式来实现这一点。让...

    java http 发送xml报文(java发送xml报文实例+参数)

    本篇文章将深入探讨如何在Java中利用HTTP协议发送XML报文,并通过实例和参数解析具体实现步骤。 首先,我们需要引入Java的HttpURLConnection类,这是Java标准库提供的HTTP客户端接口。发送XML报文通常涉及到POST或...

    java flex入门实例

    在本实例中,Flex Builder 3将被用于创建Flex前端界面,编写ActionScript代码,并与后端Java服务进行交互。 3. **BlazeDS**:BlazeDS是Adobe提供的一个开源项目,它作为一个数据和服务中间件,允许Flex应用与Java...

    java builder 模式之贷款办理

    在"Java Builder 模式之贷款办理"这个主题中,我们可以深入理解如何利用Builder模式来创建复杂贷款申请流程的实例。 Builder模式通常由四个主要角色组成:Product(产品),Builder(建造者),ConcreteBuilder...

    java-builder-generator

    Builder模式中的Product类可能具有setter和getter方法,但不直接提供构造函数,而是通过Builder来创建实例。 4. **Director**(可选):这个类负责协调Builder,指导构建过程。它定义了一种构建顺序,并通过调用...

    设计模式-Builder模式demo

    5. **运行代码**:在demo中,应该有一个主程序或者测试类,它创建一个Director实例,然后使用Builder来构建一个Product对象。这展示了Builder模式如何工作以及如何在实际项目中应用。 Builder模式的优势在于它可以...

    java 中OkHttp的使用方法及实例

    总的来说,OkHttp的使用主要包括创建`OkHttpClient`实例,构建`Request`对象,然后选择同步或异步的方式发送请求。异步请求时,通过回调函数处理响应,确保在合适的线程中执行后续操作。OkHttp还支持POST、PUT、...

    Java图形编程实例大全

    通过本《Java图形编程实例大全》,你将有机会实践上述概念,通过实际的项目加深理解。无论是初学者还是经验丰富的开发者,都可以从中受益,提升Java图形编程技能。学习过程中,建议结合每个示例,逐步理解并模仿代码...

    java常用模式的实例代码实现

    以下是一些Java中常见的设计模式及其实例代码实现的详细讲解: 1. **单例模式(Singleton)**: 单例模式确保一个类只有一个实例,并提供一个全局访问点。防止多线程环境下多个实例的产生,常用于日志、配置管理等...

    一个flex+java的登录实例完整版+flex框架

    Flex是Adobe公司开发的一种富互联网应用程序(RIA)框架,它...通过这个Flex+Java登录实例,开发者可以学习到如何结合两种技术创建功能完善的Web应用,理解前后端交互的过程,以及在实际项目中应用这些技术的最佳实践。

    java创建xml文件

    2. **创建元素节点**:通过`Document`对象的`createElement()`方法创建XML元素。 3. **添加属性**:如果需要,可以使用`createAttribute()`方法为元素添加属性。 4. **添加子元素**:使用`appendChild()`或`...

    Java经典编程源码基础例程300.zip

    实例009 安装WindowBuilder插件 12 实例010 开发计算器界面 14 第3章 Java语言基础 15 实例011 输出错误信息与调试信息 16 实例012 从控制台接收输入字符 16 实例013 重定向输出流实现程序日志 17 实例014 自动类型...

    PowerBuilder调用JMail实例

    PowerBuilder是一款强大的客户端/服务器应用开发工具,而JMail则是一个Java库,用于在Java应用程序中发送电子邮件。在这个实例中,我们将关注如何在PowerBuilder 9(PB9)中整合这两个组件。 首先,我们需要理解...

    java设计模式实例

    本资源“java设计模式实例”旨在通过实际的代码示例帮助程序员深入理解并熟练应用设计模式。 1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供全局访问点。在Java中,通常使用双重检查锁定(Double-...

Global site tag (gtag.js) - Google Analytics