1700478539
public class Client{
1700478540
1700478541
public static void main(String[]args){
1700478542
1700478543
//定义一个普通的人
1700478544
1700478545
Human human=new Human();
1700478546
1700478547
//设置一个人的初始状态
1700478548
1700478549
human.setState(new ChildState());
1700478550
1700478551
System.out.println(”====儿童的主要工作=====”);
1700478552
1700478553
human.work();
1700478554
1700478555
System.out.println(”\n====成年人的主要工作=====”);
1700478556
1700478557
human.work();
1700478558
1700478559
System.out.println(”\n====老年人的主要工作=====”);
1700478560
1700478561
human.work();
1700478562
1700478563
}
1700478564
1700478565
}
1700478566
1700478567
运行结果如下所示:
1700478568
1700478569
====儿童的主要工作=====
1700478570
1700478571
儿童的工作是玩耍!
1700478572
1700478573
====成年人的主要工作=====
1700478574
1700478575
成年人的工作就是先养活自己,然后为社会做贡献!
1700478576
1700478577
====老年人的主要工作=====
1700478578
1700478579
老年人的工作就是享受天伦之乐!
1700478580
1700478581
运行结果与策略模式相同,但是两者的分析角度是大相径庭的。策略模式的实现是通过分析每个人的工作方式的不同而得出三个不同的算法逻辑,状态模式则是从人的生长规律来分析,每个状态对应了不同的行为,状态改变后行为也随之改变。从以上示例中我们也可以看出,对于相同的业务需求,有很多种实现方法,问题的重点是业务关注的是什么,是人的生长规律还是工作逻辑?找准了业务的焦点,才能选择一个好的设计模式。
1700478582
1700478583
1700478584
1700478585
1700478586
设计模式之禅 32.2.3 小结
1700478587
1700478588
从例子中我们可以看出策略模式和状态模式确实非常相似,称之为亲兄弟亦不为过,但是这两者还是存在着非常大的差别,而且也是很容易区分的。
[
上一页 ]
[ :1.700478539e+09 ]
[
下一页 ]