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(); } }