创建者模式和工厂模式有点类似,不过关注点不同。工厂模式往往只关心你要的是什么,二不关心这个东西的具体细节是什么。而创建模式则关心的是这个东西的具体细节的创建。拿创建人物来说,我们关心的不仅是创建一个人物,还要关心他的性别,肤色和名字,则可以使用创建者模式:
- package builder;
- /**
- *
- * DOC 种族角色
- *
- */
- public class Race {
- private String name;// 名字
- private String skinColor;// 肤色
- private String sex;// 性别
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getSkinColor() {
- return this.skinColor;
- }
- public void setSkinColor(String skinColor) {
- this.skinColor = skinColor;
- }
- public String getSex() {
- return this.sex;
- }
- public void setSex(String sex) {
- this.sex = sex;
- }
- }
- package builder;
- /**
- *
- * DOC 我们关心的不仅仅是创建一个人物,还要关心其特征的创建
- *
- */
- public class RaceBuilder {
- private Race race;
- /**
- * DOC 创建一个种族
- *
- * @return
- */
- public RaceBuilder builder() {
- this.race = new Race();
- return this;
- }
- /**
- * DOC 取名字
- *
- * @return
- */
- public RaceBuilder setName(String name) {
- this.race.setName(name);
- return this;
- }
- /**
- * DOC 选择性别
- *
- * @return
- */
- public RaceBuilder setSex(String sex) {
- this.race.setSex(sex);
- return this;
- }
- /**
- * DOC 选择肤色
- *
- * @return
- */
- public RaceBuilder setSkinColor(String skinColor) {
- this.race.setSkinColor(skinColor);
- return this;
- }
- /**
- *
- * DOC 返回这个创建好的种族
- *
- * @return
- */
- public Race create() {
- return this.race;
- }
- }
测试类:
- package builder;
- public class Main {
- public static void main(String[] args) {
- Race race = new RaceBuilder().builder().setName("张三").setSex("男").setSkinColor("白色").create();
- }
- }
原文链接:http://blog.csdn.net/a107494639/article/details/7568047
【编辑推荐】