上一篇文章講到靜態(tài)內(nèi)部類的使用場景就是在建造者模式中
這篇文章就介紹一下建造者模式
所謂的建造者模式就是指用靜態(tài)內(nèi)部類的函數(shù)創(chuàng)建外部類的對(duì)象
舉個(gè)例子 上代碼:
//一個(gè)名為car的普通類,它的內(nèi)部有一個(gè)名為Maker的靜態(tài)內(nèi)部類
package com.qf.demo11;
public class Car {
private String name; //外部類的兩個(gè)屬性
private int size;
public Car() { //無參構(gòu)造方法
super();
}
public Car(Maker maker) { //外部類構(gòu)造方法才漆,此方法在內(nèi)部類的Show()中創(chuàng)建Car對(duì)象時(shí)被調(diào)用
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 //靜態(tài)內(nèi)部類
{
private String name; //靜態(tài)內(nèi)部類的屬性
private int size;
public Maker() { //無參構(gòu)造方法
}
public Maker(String name, int size) { //有參構(gòu)造方法
super();
this.name = name;
this.size = size;
}
public String getName() {
return name;
}
public Maker setName(String name) { //將set函數(shù)的返回值改成返回內(nèi)部類
this.name = name;
return this;
}
public int getSize() {
return size;
}
public Maker setSize(int size) { //將set函數(shù)的返回值改成返回內(nèi)部類
this.size = size;
return this;
}
//重寫toString()
@Override
public String toString() {
return "Maker [name=" + name + ", size=" + size + "]";
}
public Car show() //創(chuàng)建并返回外部類對(duì)象
{
return new Car(this);
}
}
}
下面是Main方法的測試
package com.qf.demo11;
import com.qf.demo11.Car.Maker;
public class Test {
public static void main(String[] args) {
// 靜態(tài)內(nèi)部類不依賴于外部類,可以自己獨(dú)立創(chuàng)建對(duì)象
Maker maker = new Maker("寶馬",23);
//創(chuàng)建Car類型的引用變量來接收Maker的show()方法返回的Car類型變量
Car car = maker.show();
//鏈?zhǔn)骄幊蹋瑢aker的set函數(shù)的返回值都改成返回內(nèi)部類對(duì)象
Car car2 = new Maker().setName("奔馳").setSize(56).show();
}
}