JAVA設(shè)計模式之建造者模式原理與用法詳解
本文實例講述了JAVA設(shè)計模式之建造者模式定義與用法。分享給大家供大家參考,具體如下:
建造者模式:將復(fù)雜對象的構(gòu)造與它的實現(xiàn)相分離,讓相同的構(gòu)建過程可以創(chuàng)建不同的對象。
適用場合:
復(fù)雜對象的算法應(yīng)該獨(dú)立于該對象的組成部分或當(dāng)構(gòu)造過程允許被構(gòu)造不同的對象時。
組成角色:
1 創(chuàng)建者(Builder)接口:為創(chuàng)建一個對象的對應(yīng)部件所指定抽象接口。
2 具體創(chuàng)建者(ConcreteBuilder):實現(xiàn)Builder的接口以構(gòu)造對象的各個部件。
3 具體創(chuàng)建者管理對象(Director):使用Builder接口的對象。
4 復(fù)雜產(chǎn)品對象(Product):被構(gòu)造的復(fù)雜對象。
/**
* 生產(chǎn)汽車:創(chuàng)建者Builder接口
* @description:
* @date 2016-1-21 下午1:15:39
*/
public interface CarBuilder {
void carRoof();//生產(chǎn)車頂
void carBottom();//生產(chǎn)車底盤
void carWheel();//生產(chǎn)車輪
Car buildCar();
}
/**
* 具體創(chuàng)建對象ConcreteBuilder:白色汽車
* @description:
* @date 2016-1-21 下午1:16:22
*/
public class WhiteCar implements CarBuilder {
Car car;
public WhiteCar() {
car = new Car();
}
@Override
public void carRoof() {
car.setRoof("制造白色汽車---車頂");
}
@Override
public void carBottom() {
car.setBottom("制造白色汽車---車底");
}
@Override
public void carWheel() {
car.setWheel("制造白色汽車---車輪");
}
@Override
public Car buildCar() {
// TODO Auto-generated method stub
return car;
}
}
/**
* 具體創(chuàng)建者管理對象(Director),建造者
* @description:
* @author ldm
* @date 2016-1-21 下午1:17:12
*/
public class CarDirector {
public Car constructPerson(CarBuilder carBuilder) {
carBuilder.carRoof();
carBuilder.carBottom();
carBuilder.carWheel();
return carBuilder.buildCar();
}
}
/**
* 最終生產(chǎn)的'復(fù)雜產(chǎn)品'對象
* @description:
* @date 2016-1-21 下午1:22:28
*/
public class Car {
private String roof;// 車頂
private String bottom;// 車底
private String wheel;// 車輪
public String getRoof() {
return roof;
}
public void setRoof(String roof) {
this.roof = roof;
}
public String getBottom() {
return bottom;
}
public void setBottom(String bottom) {
this.bottom = bottom;
}
public String getWheel() {
return wheel;
}
public void setWheel(String wheel) {
this.wheel = wheel;
}
}
測試代碼:
public class Test {
public static void main(String[] args) {
CarDirector carDirector = new CarDirector();
Car car = carDirector.constructPerson(new WhiteCar());
System.out.println(car.getRoof());
System.out.println(car.getBottom());
System.out.println(car.getWheel());
System.out.println("----整個車子就完成了!--");
}
}
打印結(jié)果:
制造白色汽車—車頂 制造白色汽車—車底 制造白色汽車—車輪 —-整個車子就完成了!–
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
JavaWeb詳細(xì)講述Cookie和Session的概念
web開發(fā)階段我們主要是瀏覽器和服務(wù)器之間來進(jìn)行交互。瀏覽器和服務(wù)器之間的交互就像人和人之間進(jìn)行交流一樣,但是對于機(jī)器來說,在一次請求之間只是會攜帶著本次請求的數(shù)據(jù)的,但是可能多次請求之間是會有聯(lián)系的,所以提供了會話機(jī)制2022-06-06
Java實現(xiàn)的具有GUI的校園導(dǎo)航系統(tǒng)的完整代碼
這篇文章主要介紹了Java實現(xiàn)的具有GUI的校園導(dǎo)航系統(tǒng)的完整代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
教你用Springboot實現(xiàn)攔截器獲取header內(nèi)容
項目中遇到一個需求,對接上游系統(tǒng)是涉及到需要增加請求頭,請求頭的信息是動態(tài)獲取的,需要動態(tài)從下游拿到之后轉(zhuǎn)給上游,文中非常詳細(xì)的介紹了該需求的實現(xiàn),需要的朋友可以參考下2021-05-05
SpringBoot對數(shù)據(jù)訪問層進(jìn)行單元測試的方法詳解
我們公司作為一個面向銀行、金融機(jī)構(gòu)的TO B類企業(yè),頻繁遇到各個甲方爸爸提出的國產(chǎn)化數(shù)據(jù)庫的改造需求,包括OceanBase, TiDB,geldenDB等等,本文就介紹一種快高效、可復(fù)用的解決方案——對數(shù)據(jù)訪問層做單元測試,需要的朋友可以參考下2023-08-08
java中CompletableFuture異步執(zhí)行方法
本文主要介紹了java中CompletableFuture異步執(zhí)行方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06

