diff --git a/README.md b/README.md index 85458e7cabf618f400e4d5f0562e96bd4a67d75b..bbb8c9b7912bd58c79678aaa9024cfab4bf0c6b9 100644 --- a/README.md +++ b/README.md @@ -199,6 +199,8 @@ ![img.png](img/img_state_pattern_concept.png) # 状态模式的结构图 ![img.png](img/img_state_pattern_struct.png) +## 状态模式的总结 +![img.png](img/img_state_pattern_summary.png) 1. 使用 Readme.md 来支持不同的语言, Readme\_en.md: 支持英文, Readme\_zh.md: 支持中文 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) diff --git a/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/Client.java b/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/Client.java new file mode 100644 index 0000000000000000000000000000000000000000..148927bb7fd82ebedf9b0d0bd1ae181977559072 --- /dev/null +++ b/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/Client.java @@ -0,0 +1,18 @@ +package com.boyunv.state.example03; +/* + *@description + * + *@author boyunv + *@create 2023/8/30 20:55 + *@version 1.0 + */ + +public class Client { + + public static void main(String[] args) { + TrafficLight trafficLight = new TrafficLight(); + trafficLight.switchToRed(); + trafficLight.switchToGreen(); + trafficLight.switchToYellow(); + } +} diff --git a/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/GreenState.java b/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/GreenState.java new file mode 100644 index 0000000000000000000000000000000000000000..b5c63fd1eacc4f4c1099760359c0d1fd58367e6a --- /dev/null +++ b/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/GreenState.java @@ -0,0 +1,25 @@ +package com.boyunv.state.example03; +/* + *@description + * + *@author boyunv + *@create 2023/8/30 20:46 + *@version 1.0 + */ + +public class GreenState implements State{ + @Override + public void switchToGreen(TrafficLight trafficLight) { + System.out.println("当前为绿灯,无需切换"); + } + + @Override + public void switchToRed(TrafficLight trafficLight) { + System.out.println("绿灯不能切换为红灯"); + } + + @Override + public void switchToYellow(TrafficLight trafficLight) { + System.out.println("黄灯亮起....时长: ---> 10S "); + } +} diff --git a/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/RedState.java b/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/RedState.java new file mode 100644 index 0000000000000000000000000000000000000000..959481c35a1ba3e43eb6b142c12ba60add39570b --- /dev/null +++ b/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/RedState.java @@ -0,0 +1,25 @@ +package com.boyunv.state.example03; +/* + *@description + * + *@author boyunv + *@create 2023/8/30 20:46 + *@version 1.0 + */ + +public class RedState implements State{ + @Override + public void switchToGreen(TrafficLight trafficLight) { + System.out.println("红灯不能切换为绿灯"); + } + + @Override + public void switchToRed(TrafficLight trafficLight) { + System.out.println("当前为红灯,无需切换"); + } + + @Override + public void switchToYellow(TrafficLight trafficLight) { + System.out.println("黄灯亮起....时长: ---> 10S "); + } +} diff --git a/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/State.java b/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/State.java new file mode 100644 index 0000000000000000000000000000000000000000..5de8a2e859cf474253b35b1d7c7a838d8672a261 --- /dev/null +++ b/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/State.java @@ -0,0 +1,18 @@ +package com.boyunv.state.example03; +/* + *@description + * 交通灯的状态接口 + *@author boyunv + *@create 2023/8/30 20:39 + *@version 1.0 + */ + + + +public interface State { + + + void switchToGreen(TrafficLight trafficLight); //切换为绿灯 + void switchToRed(TrafficLight trafficLight); //切换为红灯 + void switchToYellow(TrafficLight trafficLight); //切换为黄灯 +} diff --git a/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/TrafficLight.java b/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/TrafficLight.java new file mode 100644 index 0000000000000000000000000000000000000000..eddd41e9033a0bc5e5f9c7c1b2f6dc8a0e348f69 --- /dev/null +++ b/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/TrafficLight.java @@ -0,0 +1,29 @@ +package com.boyunv.state.example03; +/* + *@description + * 交通灯类 + *@author boyunv + *@create 2023/8/30 20:41 + *@version 1.0 + */ + +import lombok.Setter; + +public class TrafficLight { + //初始化 红灯 + @Setter + State state=new RedState(); + + + public void switchToGreen(){ + state.switchToGreen(this); + } + public void switchToRed(){ + state.switchToRed(this); + } + public void switchToYellow(){ + state.switchToYellow(this); + } + + +} diff --git a/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/YellowState.java b/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/YellowState.java new file mode 100644 index 0000000000000000000000000000000000000000..32cb0ebf1c19741983b799b9b14456212c2daf8f --- /dev/null +++ b/byv-state-patttern-16/src/main/java/com/boyunv/state/example03/YellowState.java @@ -0,0 +1,25 @@ +package com.boyunv.state.example03; +/* + *@description + * + *@author boyunv + *@create 2023/8/30 20:46 + *@version 1.0 + */ + +public class YellowState implements State{ + @Override + public void switchToGreen(TrafficLight trafficLight) { + System.out.println("绿灯亮起---->时长60S"); + } + + @Override + public void switchToRed(TrafficLight trafficLight) { + System.out.println("红灯亮起---->时长90S"); + } + + @Override + public void switchToYellow(TrafficLight trafficLight) { + System.out.println("当前黄灯,无需切换"); + } +} diff --git a/img/img_state_pattern_summary.png b/img/img_state_pattern_summary.png new file mode 100644 index 0000000000000000000000000000000000000000..5866e53553076d98f49e711e2644a00849425e01 Binary files /dev/null and b/img/img_state_pattern_summary.png differ