策略模式和状态模式的区别

简介: 策略模式和状态模式的类图相同,目的都是为了解耦,但是还有很多的区别


策略模式和状态模式的类图相同,目的都是为了解耦,但是还有很多的区别

策略模式

1. public classs 我{
2. 
3. //打扮
4. void dressUp();
5. 
6. //娱乐
7. void entertainment(Grade grade){
8.       grade.entertainment();
9.    }
10. 
11. //买车
12. void buyCar();
13. 
14. 
15. }

策略接口

1. public interface Grade(
2. 
3. public void hasMoney();
4. 
5. )

策略实现

1. public class has10 implements Grade{
2. public void entertainment(){
3.           system.out.print("10块钱保健啥,洗个澡吧")
4.        }
5. }
1. public class has100 implements Grade{
2. public void entertainment(){
3.           system.out.print("100块,按个脚吧")
4.        }
5. }
1. public class has1000 implements Grade{
2. public void entertainment(){
3.           system.out.print("1000块,那就来个大保健吧")
4.        }
5. }

调用

1. public class Client {
2. 
3. public static void main(String[] args) {
4.           我 me = new 我();
5.           me.entertainment(new has10());
6.           me.entertainment(new has100());
7.        }

可以看到只有针对娱乐有不同方法,而其他的项目没有影响,此为策略模式

状态模式

我类的修改

1. public classs 我{
2. 
3. private Grade grade;
4. 
5. public void setGrade(Grade grade) {
6. this.grade= grade;
7.     }
8. //打扮
9. void dressUp(
10.       grade.dressUp();
11.    );
12. 
13. //娱乐
14. void entertainment(Healthcare healthcare){
15.       grade.dressUp();
16.    }
17. 
18. //买车
19. void buyCar(
20.      grade.buyCar();
21.    );
22. 
23. 
24. }

调用

1. public static void main(String[] args) {
2.           我 me = new 我();
3. me.setGrade(new has10());
4. me.entertainment();
5. me.dressUp();
6. me.setGrade(new has100());
7. me.entertainment();
8.        }

可以看到每一次的变化,我的整个档次都变了,无论是娱乐还是穿衣服,所以此为状态模式


相关文章
|
1月前
|
设计模式 算法
状态模式和策略模式有什么区别
状态模式和策略模式有什么区别
15 1
|
8月前
|
设计模式 uml 微服务
个人理解简单工厂模式和策略模式的区别
个人理解简单工厂模式和策略模式的区别
66 1
|
9月前
|
设计模式
设计模式-行为型模式:状态模式
设计模式-行为型模式:状态模式
|
5月前
行为型 状态模式
行为型 状态模式
18 0
|
5月前
|
算法 数据安全/隐私保护
行为型 策略模式
行为型 策略模式
18 1
|
11月前
|
设计模式 前端开发
关于策略模式我所知道的
关于策略模式我所知道的
59 0
|
设计模式 程序员
嘿!策略模式和工厂模式的区别你知道吗?
嘿!策略模式和工厂模式的区别你知道吗?
|
设计模式 算法 Java
状态模式和策略模式的区别与联系
UML 状态模式是策略模式的孪生兄弟,是因为它们的UML图是一样的。但意图却完全不一样,策略模式是让用户指定更换的策略算法,而状态模式是状态在满足一定条件下的自动更换,用户无法指定状态,最多只能设置初始状态。
|
设计模式 算法