上一篇文章讲到静态内部类的使用场景就是在建造者模式中
这篇文章就介绍一下建造者模式
所谓的建造者模式就是指用静态内部类的函数创建外部类的对象
举个例子 上代码:
//一个名为car的普通类,它的内部有一个名为Maker的静态内部类
package com.qf.demo11;
public class Car {
private String name; //外部类的两个属性
private int size;
public Car() { //无参构造方法
super();
}
public Car(Maker maker) { //外部类构造方法,此方法在内部类的Show()中创建Car对象时被调用
super();
this.name = maker.name;
this.size = maker.size;
}
public String getName() { //Car的get set方法
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public static class Maker //静态内部类
{
private String name; //静态内部类的属性
private int size;
public Maker() { //无参构造方法
}
public Maker(String name, int size) { //有参构造方法
super();
this.name = name;
this.size = size;
}
public String getName() {
return name;
}
public Maker setName(String name) { //将set函数的返回值改成返回内部类
this.name = name;
return this;
}
public int getSize() {
return size;
}
public Maker setSize(int size) { //将set函数的返回值改成返回内部类
this.size = size;
return this;
}
//重写toString()
@Override
public String toString() {
return "Maker [name=" + name + ", size=" + size + "]";
}
public Car show() //创建并返回外部类对象
{
return new Car(this);
}
}
}
下面是Main方法的测试
package com.qf.demo11;
import com.qf.demo11.Car.Maker;
public class Test {
public static void main(String[] args) {
// 静态内部类不依赖于外部类,可以自己独立创建对象
Maker maker = new Maker("宝马",23);
//创建Car类型的引用变量来接收Maker的show()方法返回的Car类型变量
Car car = maker.show();
//链式编程,将Maker的set函数的返回值都改成返回内部类对象
Car car2 = new Maker().setName("奔驰").setSize(56).show();
}
}