`

使用静态内部类实现builder模式

阅读更多

项目中有个参数特别多的实体类,每次new一个对象都特别怕弄错,于是就有了下面示例的解决方式

/**
 * @author quainter
 */
public class Person {
	
	/**
	 * 私有化默认构造方法,
	 * 不希望使用这种方法构造,
	 * 索性就不让别人用,
	 * 算是个好习惯吧
	 */
	private Person(){}
	
	//必填实例化参数
	private String name;
	//可选实例化参数
	private int sex;
	private int age;
	private String favor;
	
	//使用静态内部类实例化Person构造器
	private Person(Builder builder){
		this.name=builder.name;
		this.age=builder.age;
		this.sex=builder.sex;
		this.favor=builder.favor;
	}
	
	/**
	 * 静态内部构造器类(主角)
	 * @author quainter
	 */
	public static class Builder{

		private String name;
		private int sex;
		private int age;
		private String favor;
		
		public Builder(String name){
			this.name=name;
		}
		
		public Builder sex(int sex){
			this.sex=sex;
			return this;
		}
		
		public Builder age(int age){
			this.age=age;
			return this;
		}
		
		public Builder favor(String favor){
			this.favor=favor;
			return this;
		}
		public Person build(){
			return new Person(this);
		}
	}

	/**
	 * getters and setters
	 */
	
	public String getName() {
		return name;
	}

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

	public int getSex() {
		return sex;
	}

	public void setSex(int sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

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

	public String getFavor() {
		return favor;
	}

	public void setFavor(String favor) {
		this.favor = favor;
	}

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

 

public class Test {

	public static void main(String[] args) {
		Person person = new Person.Builder("张三").age(17).favor("吃").sex(1).build();
		System.out.println(person);
	}

}

 运行结果:
   

 

OK,每天进步一点点!
 

  • 大小: 4 KB
分享到:
评论

相关推荐

    Java中的静态内部类详解及代码示例

    Java中的静态内部类详解及代码示例 Java中的静态内部类是一种特殊的内部类,它可以独立于外部类存在,具有自己的生命周期。...在实际开发中,静态内部类可以用于实现Builder模式,提高代码的可读性和可维护性。

    Java Builder模式构建MAP/LIST的实例讲解

    在 Java 中,可以使用静态内部类来实现 Builder 模式。在上面的示例代码中,我们可以看到,MapBuilder 和 ListBuilder 都是使用静态内部类来实现的。Builder 类负责构建 Map 或 List 对象,而 MapBuilder 和 ...

    Android-使用Builder模式设置字体大小颜色位置的属性

    这个类通常包含私有构造函数,并且提供一个内部静态类`Builder`。`Builder`类拥有设置各种属性的方法,如`setFontSize()`、`setColor()`和`setPosition()`。 ```java public class MyDialog { private int ...

    Java中Builder模式的实现详解

    2. 在`Order`类中创建一个静态内部类`Builder`,用于构建`Order`对象。 3. `Builder`类中通常有一个私有的内部类`OrderState`,它包含了与`Order`类相同的属性,用于存储构建过程中的数据。 4. `Builder`类提供一...

    设计模式课程设计---使用5个以上不同的设计模式完成(java)

    在Java中,通常通过私有构造函数、静态内部类或双重检查锁定实现。单例模式常用于控制资源的访问,如线程池、数据库连接池等。 3. **抽象工厂模式(Abstract Factory Pattern)**:抽象工厂模式提供一个创建一系列...

    各个设计模式的介绍Factory ,Builder

    在工厂模式中,客户类只需要知道工厂,而不需知道具体的实现类。这样,当需要添加新的产品类型时,只需修改工厂类,而无需修改使用这些产品类的客户代码。例如,假设你正在为MM订餐,不论她是喜欢麦当劳的鸡翅还是...

    23三种设计模式java实现

    在Java中,可以通过双重检查锁定(Double-Checked Locking)或者静态内部类实现。 - **工厂方法模式**:定义一个创建对象的接口,但让子类决定实例化哪一个类。Java中,通过抽象工厂类和具体实现类实现。 - **抽象...

    GoF+23种设计模式解析附C++实现源码(2nd+Edition).pdf

    抽象类持有对实现类的引用,实现类提供具体实现。 #### 2.2 Adapter模式 **定义**: Adapter模式将一个类的接口转换成客户希望的另外一个接口。 **应用场景**: 当希望重用一些现有类但其接口不符合需求时。 **C++...

    23种设计模式的java实现

    Java中通常使用双重检查锁定(Double-Check Locking)或者静态内部类来实现单例。 2. 工厂模式:提供一个接口来创建对象,但让子类决定实例化哪个类。Java中的AbstractFactory和SimpleFactory是两种常见实现。 3. ...

    多种设计模式的java实现方式

    Java中的实现通常包括双重检查锁定(Double-Checked Locking)、静态内部类、枚举等方式,防止多线程环境下的并发问题。 3. **Interpreter模式**:该模式主要用于实现表达式,将语言的语法结构映射为类。在Java中,...

    23种设计模式的Java实现

    在Java中,可以使用枚举、双重检查锁定(DCL)或静态内部类等方式实现。 2. **工厂模式(Factory)**:提供一个接口来创建对象,但让子类决定实例化哪个类。Java中的工厂方法通常通过抽象工厂类或接口来实现。 3. ...

    《设计模式--基于C#的工程化实现及扩展》.(王翔).rar_0517

    在C#中,可以使用静态内部类或者懒加载实现单例,确保线程安全。工厂模式则抽象出对象的创建过程,使代码更易于维护和扩展。C#中的抽象工厂类或接口可以用来实现这一模式。 观察者模式是一种行为模式,允许对象在...

    C#实现28种设计模式

    DesignPatterns单例模式文件中,展示了如何使用C#的静态成员、双重检查锁定等方法来实现线程安全的单例。 3. **备忘录模式 (Memento Pattern)**:备忘录模式用于在不破坏封装性的前提下,捕获一个对象的内部状态,...

    swift-使用OC实现常用的23种设计模式

    Swift中,可以使用结构体或类来实现建造者模式。 5. 原型模式(Prototype):用原型实例指定创建对象的种类,并且通过复制这个原型来创建新的对象。Swift中的`NSCopying`协议可以用来实现浅拷贝或深拷贝。 6. 组合...

    设计模式Java版各个实现代码

    在Java中,单例模式可以通过懒汉式(线程不安全)和饿汉式(线程安全)等多种方式实现,还有双重检查锁定(DCL)和静态内部类等线程安全且高效的实现方式。 2. **工厂模式**:提供一个创建对象的接口,但让子类决定...

    Java Builder模式构建MAP的示例

    在给定的示例中,我们看到`MapBuilder`类和它的内部静态类`Builder`共同实现了Builder模式。 1. **Builder类**: - `Builder<T>`内部类是Builder模式的核心,它包含一个`Map, T>`类型的成员变量`map`,用于存储...

    设计模式 c++实现

    - 适配器模式(Adapter):将两个不兼容的接口转换为兼容接口,C++可以使用类或对象组合实现。 - 桥接模式(Bridge):将抽象部分与实现部分分离,使它们可以独立变化。C++中通过继承和组合结合使用。 - 组合模式...

Global site tag (gtag.js) - Google Analytics