Java设计模式之创建者模式简介
Java的创建者模式与工厂模式有点类似,不过关注点不同。工厂模式往往只关心你要的是什么,而不关心这个东西的具体细节是什么。相对而言创建模式则是关心这个东西的具体细节的创建。拿创建人物来说,我们关心的不仅是创建一个人物,还要关心他的性别,肤色和名字,则可以使用创建者模式。
程序实例如下所示:
packagebuilder;
/**
*
*DOC种族角色
*
*/
publicclassRace{
privateStringname;//名字
privateStringskinColor;//肤色
privateStringsex;//性别
publicStringgetName(){
returnthis.name;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetSkinColor(){
returnthis.skinColor;
}
publicvoidsetSkinColor(StringskinColor){
this.skinColor=skinColor;
}
publicStringgetSex(){
returnthis.sex;
}
publicvoidsetSex(Stringsex){
this.sex=sex;
}
}
packagebuilder;
/**
*
*DOC我们关心的不仅仅是创建一个人物,还要关心其特征的创建
*
*/
publicclassRaceBuilder{
privateRacerace;
/**
*DOC创建一个种族
*
*@return
*/
publicRaceBuilderbuilder(){
this.race=newRace();
returnthis;
}
/**
*DOC取名字
*
*@return
*/
publicRaceBuildersetName(Stringname){
this.race.setName(name);
returnthis;
}
/**
*DOC选择性别
*
*@return
*/
publicRaceBuildersetSex(Stringsex){
this.race.setSex(sex);
returnthis;
}
/**
*DOC选择肤色
*
*@return
*/
publicRaceBuildersetSkinColor(StringskinColor){
this.race.setSkinColor(skinColor);
returnthis;
}
/**
*
*DOC返回这个创建好的种族
*
*@return
*/
publicRacecreate(){
returnthis.race;
}
}
测试类如下:
packagebuilder;
publicclassMain{
publicstaticvoidmain(String[]args){
Racerace=newRaceBuilder().builder().setName("张三").setSex("男").setSkinColor("白色").create();
}
}