設(shè)計(jì)模式—?jiǎng)?chuàng)建型模式之建造者模式
如果我們創(chuàng)建的對(duì)象比較復(fù)雜,但其細(xì)節(jié)還要暴露給使用者,這樣就需要用到建造者模式。
建造者設(shè)計(jì)模式,屏蔽過(guò)程,而不屏蔽細(xì)節(jié)。
比如我們有一個(gè)手機(jī)類,定義如下:
public class Phone {
//cpu
private String cpu;
//運(yùn)行內(nèi)存
private String memory;
//存儲(chǔ)內(nèi)存
private String disk;
//省略getter and setter 省略toString
}
我們想定制自己的一個(gè)手機(jī),可以先定義一個(gè)抽象的構(gòu)建者;
public abstract class AbstarctPhoneBuilder {
Phone phone;
//定制cpu
abstract AbstarctPhoneBuilder withCpu(String cpu);
//定制運(yùn)行內(nèi)存
abstract AbstarctPhoneBuilder withMemory(String memory);
//定制存儲(chǔ)內(nèi)存
abstract AbstarctPhoneBuilder withDisk(String disk);
//返回構(gòu)建好的phone
Phone build(){
return phone;
}
}
如果我們想定制一個(gè)香蕉手機(jī),就可以繼承這個(gè)抽象的構(gòu)建者,然后實(shí)現(xiàn)這些定制方法:
public class BananaPhoneBuilder extends AbstarctPhoneBuilder{
public BananaPhoneBuilder(){
this.phone = new Phone();
}
@Override
AbstarctPhoneBuilder withCpu(String cpu) {
this.phone.setCpu(cpu);
return this;
}
@Override
AbstarctPhoneBuilder withMemory(String memory) {
this.phone.setMemory(memory);
return this;
}
@Override
AbstarctPhoneBuilder withDisk(String disk) {
this.phone.setDisk(disk);
return this;
}
}
使用方式如下:
public class BuilderTest {
public static void main(String[] args) {
AbstarctPhoneBuilder builder = new BananaPhoneBuilder();
Phone phone = builder.withCpu("量子cpu")
.withMemory("1T運(yùn)行內(nèi)存")
.withDisk("100T存儲(chǔ)內(nèi)存")
.build();
System.out.println(phone.toString());
}
}
運(yùn)行結(jié)果如下:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-738399.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-738399.html
到了這里,關(guān)于設(shè)計(jì)模式—?jiǎng)?chuàng)建型模式之建造者模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!