【Java】静态内部类 创建者模式 例子
原创
©著作权归作者所有:来自51CTO博客作者wx636dc453ed367的原创作品,请联系作者获取转载授权,否则将追究法律责任
创建者模式,和工厂模式一样,作用在于将对象的创建过程与使用过程解耦。
下面介绍一种使用静态内部类实现的创建者模式。
要创建一个业务对象,必须使用该对象的模板来把属性设置好,最后使用模板来创建业务对象。
package com.liyao;
public class Person {
private int id;
private int age;
private String name;
private String address;
public Person(Setter setter){
id = setter.id;
age = setter.age;
name = setter.name;
address = setter.address;
}
public static class Setter{
private int id;
private int age;
private String name;
private String address;
static Setter create(){
return new Setter();
}
public Person build(){
return new Person(this);
}
public Setter setName(String name) {
this.name = name;
return this;
}
public Setter setAge(int age) {
this.age = age;
return this;
}
public Setter setAddress(String address) {
this.address = address;
return this;
}
public Setter setId(int id) {
this.id = id;
return this;
}
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", age=" + age +
", name='" + name + '\'' +
", address='" + address + '\'' +
'}';
}
}
客户端:
public class App
{
public static void main( String[] args )
{
Person person = Person.Setter
.create()
.setAddress("yuanping")
.setAge(12)
.setId(1)
.setName("liyao").build();
System.out.println(person);
}
}
这种方式的好处在于:
首先继承了创建者模式的优点,解耦;
第二,创建的过程很紧凑,使用了链式编程的模式,把创建过程集中到一起,防止各种设置值的方法散落在各个地方,可读性更好。
第三,setter可以复用,相同的创建过程只要一个模板,一个setter即可。