声明:文章内容根据大牛博客的内容,自己理解后,给自己做的学习笔记,文末会附上大牛博客地址链接。有需要沟通交流的可加我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