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

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


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

策略模式

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.        }

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


相关文章
|
6月前
|
设计模式 算法
状态模式和策略模式有什么区别
状态模式和策略模式有什么区别
121 1
|
1月前
|
设计模式 算法 C#
C# 一分钟浅谈:策略模式与状态模式
【10月更文挑战第13天】本文介绍了两种常见的行为型设计模式:策略模式和状态模式。策略模式通过封装一系列算法并使其可互换,实现算法的灵活变化;状态模式则通过改变对象的内部状态来改变其行为。文章通过C#代码示例详细说明了这两种模式的应用场景、常见问题及解决方法。
53 19
|
3月前
|
设计模式 算法
工厂模式与策略模式的区别
【8月更文挑战第22天】
45 2
工厂模式与策略模式的区别
|
设计模式
设计模式-行为型模式:状态模式
设计模式-行为型模式:状态模式
|
6月前
|
算法 数据安全/隐私保护
行为型 策略模式
行为型 策略模式
35 1
|
6月前
行为型 状态模式
行为型 状态模式
42 0
|
11月前
|
前端开发
状态模式
状态模式
47 0
|
设计模式 JavaScript
关于状态模式我所知道的
关于状态模式我所知道的
62 0
|
设计模式 程序员
嘿!策略模式和工厂模式的区别你知道吗?
嘿!策略模式和工厂模式的区别你知道吗?