建造器模式
1.为什么要用建造设计模式
当一个类的属性非常多,当构造这个类的时候,每次传入的属性的个数都不一样,就会导致这个类的构造方法非常多。一个类可能出现几十个重载的构造函数,造成不易使用,每次使用都需要查询API才知道每个参数的含义是什么?
2、什么是建造器模式?
建造器模式就是隐藏显示构建对象的方法,在类中加一个静态内部类,在静态内部类中有一个对象,在构建的时候先把属性传给内部类中的对象,然后检查这个对象的属性依赖是否正确,如果正确,则把这个对象的属性值赋值给外部类的属性,并构造对象。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/**
* @Author: jesse
* @Date: 2018/12/19
* @Time: 10:30 AM
*/
public class Square {
private int color;
private int borderSize;
private Square(Builder builder) {
this.color = color;
this.borderSize = borderSize;
}
public static class Builder{
private int color;
private int borderSize;
public int getColor() {
return color;
}
public void setColor(int color) {
this.color = color;
}
public int getBorderSize() {
return borderSize;
}
public void setBorderSize(int borderSize) {
this.borderSize = borderSize;
}
public Square build(){
//检查参数之间关系是否设置正确
if(borderSize<0){
//处理
}
return new Square(this);
}
}
}
3、为什么不用对象的get\set方法
get\set方法需要先构建对象,在给对象属性进行赋值,这样无法检查属性依赖是否正确,因为对象已经构建了,但这个对象是不合法的。