建造者模式---每个人都有自己的路

        声明:文章内容根据大牛博客的内容,自己理解后,给自己做的学习笔记,文末会附上大牛博客地址链接。有需要沟通交流的可加我QQ群:425120333
        随着春节的渐渐临近,绝大多数人都是选择了回家和家人一起过年,但是随着时代的进步,也有一部分人选择了春节和家人去旅游。
    面对着同一个景点,不同的游览顺序,给每个人带来的游览体验也不一样, 每个旅游团为了给游客更好的体验都有自己的游览路线,而且可能还不止一个。
        针对上面描述的场景,这里用建造者模式的思想来实现下。
public class Client {
    public static void main(String[] args) {
        Group group = new Group();
        group.firstOrder();
        System.out.println("---------------分隔符--------------");
        group.SecondOrder();
    }
}

class Group {
    List<String> playOrder = new ArrayList<String>();
    BuildOrder buildOrder = new BuildOrder();

    void firstOrder() {
        this.playOrder.clear();
        this.playOrder.add("second");
        this.playOrder.add("four");
        this.playOrder.add("first");
        this.playOrder.add("five");
        this.buildOrder.setOrder(playOrder);
        this.buildOrder.getPark().haveFun();
    }

    void SecondOrder() {
        this.playOrder.clear();
        this.playOrder.add("five");
        this.playOrder.add("four");
        this.playOrder.add("third");
        this.playOrder.add("second");
        this.playOrder.add("first");
        this.buildOrder.setOrder(playOrder);
        this.buildOrder.getPark().haveFun();
    }
}

class BuildOrder {
    Park park = new Park();

    void setOrder(List<String> playOrder) {
        this.park.setOrder(playOrder);
    }

    Park getPark() {
        return this.park;
    }
}

class Park {
    public List<String> playOrder = new ArrayList<String>();

    void setOrder(List<String> playOrder) {
        this.playOrder = playOrder;
    }

    void descFirst() {
        System.out.println("游览景点一");
    }

    void descSecond() {
        System.out.println("游览景点二");
    }

    void descThird() {
        System.out.println("游览景点三");
    }

    void descFour() {
        System.out.println("游览景点四");
    }

    void descFive() {
        System.out.println("游览景点五");
    }

    void haveFun() {
        System.out.println("游览景点的顺序如下:");
        for (String name : playOrder) {
            switch (name) {
            case "first":
                this.descFirst();
                break;
            case "second":
                this.descSecond();
                break;
            case "third":
                this.descThird();
                break;
            case "four":
                this.descFour();
                break;
            case "five":
                this.descFive();
                break;
            default:
                break;
            }
        }
    }
}

控制台输出:
游览景点的顺序如下:
游览景点二
游览景点四
游览景点一
游览景点五
—————分隔符————–
游览景点的顺序如下:
游览景点五
游览景点四
游览景点三
游览景点二
游览景点一

    后续如果旅游团又出来了新的旅游路线只要在Group类中新添加一个方法就可以了,通过建造者模式,使得游客可以在不知道游览具体细节的情况下,
跟着团走就可以获得最好的旅游体验(当然也不是绝对的),
而且如果后续要加个别的旅游团也很方便。
    建造者模式最主要的功能是基本方法的调用顺序安排,通俗的就是说零件的装配,顺序不同产生的对象也不同;而工厂方法重点是创建,创建零件是职责,
组装顺序则不会关心。
    参考大牛的博客:
    http://www.cnblogs.com/zuoxiaolong/p/pattern16.html
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我们来看一下如何使用建造者模式在 Java 中实现女娲造人。 首先,我们需要先定义一个人类的基本属性,例如姓名、性别、年龄等等。这些属性可以组成一个 Person 类: ```java public class Person { private String name; private String gender; private int age; public Person(String name, String gender, int age) { this.name = name; this.gender = gender; this.age = age; } // 省略 getter 和 setter 方法 } ``` 接下来,我们需要定义一个 Builder 类,用于构建 Person 对象。Builder 类需要包含和 Person 类相同的属性,同时还需要提供一些方法来设置这些属性: ```java public class PersonBuilder { private String name; private String gender; private int age; public PersonBuilder setName(String name) { this.name = name; return this; } public PersonBuilder setGender(String gender) { this.gender = gender; return this; } public PersonBuilder setAge(int age) { this.age = age; return this; } public Person build() { return new Person(name, gender, age); } } ``` 在 Builder 类中,我们提供了三个方法来设置 Person 的属性,并且每个方法都返回 Builder 对象本身,这样就可以链式调用多个方法来设置属性。最后,我们还提供了一个 build 方法来构建 Person 对象。 接下来,我们就可以使用 Builder 类来构建 Person 对象了: ```java Person person = new PersonBuilder() .setName("张三") .setGender("男") .setAge(20) .build(); ``` 这里我们首先创建了一个 PersonBuilder 对象,然后链式调用 setName、setGender 和 setAge 方法来设置属性,最后调用 build 方法来构建 Person 对象。 这就是使用建造者模式在 Java 中实现女娲造人的方法。建造者模式可以让代码更加清晰、简洁,并且易于扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值