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

来源:互联网 发布:mac电脑装双系统 编辑:程序博客网 时间:2024/05/01 05:16
        声明:文章内容根据大牛博客的内容,自己理解后,给自己做的学习笔记,文末会附上大牛博客地址链接。有需要沟通交流的可加我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
原创粉丝点击