diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 093b2890f026fb8285d281e82c523b0d96563956..b5b2a3900cf143cd982cd9e2f1d1eab7205bcc37 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -15,6 +15,7 @@ + diff --git a/.idea/encodings.xml b/.idea/encodings.xml index 881b8816b861402748ad23697df6e9156e2d4a25..0ca6300f2b75cd9cf65dbfb85f445e252995898e 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -13,6 +13,8 @@ + + diff --git a/.idea/misc.xml b/.idea/misc.xml index e3f745fade7c9bd451d2c1e4a8d765c4b50d5e8a..8e01406de26e7a5f5d3aa77cbc9a9021ad6b372e 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -14,6 +14,7 @@ diff --git a/README.md b/README.md index f7a2d32c65ded13b797dd185ab8218150ac383ca..fb4127ae0ae3d58f1f625b58c6e3899c9049f04d 100644 --- a/README.md +++ b/README.md @@ -180,6 +180,11 @@ 举个例子: ![img.png](img/img_strategy_pattern_concept.png) +## 6.3.2 策略模式结构图 +![img.png](img/img_strategy_pattern_struct.png) + + + # 特技 1. 使用 Readme.md 来支持不同的语言, Readme\_en.md: 支持英文, Readme\_zh.md: 支持中文 diff --git a/byv-strategy-patttern-14/.gitignore b/byv-strategy-patttern-14/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..5ff6309b7199129c1afe4f4ec1906e640bec48c6 --- /dev/null +++ b/byv-strategy-patttern-14/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/byv-strategy-patttern-14/pom.xml b/byv-strategy-patttern-14/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..71e78d626bd121ef3760c54825304376dfb9ef88 --- /dev/null +++ b/byv-strategy-patttern-14/pom.xml @@ -0,0 +1,25 @@ + + + 4.0.0 + + org.example + byv-strategy-patttern-14 + 1.0-SNAPSHOT + + + 8 + 8 + UTF-8 + + + + org.projectlombok + lombok + 1.18.28 + compile + + + + \ No newline at end of file diff --git a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example01/Client.java b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example01/Client.java new file mode 100644 index 0000000000000000000000000000000000000000..05162f3ac80fc177e360abd9dfe26907e4b722dd --- /dev/null +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example01/Client.java @@ -0,0 +1,19 @@ +package com.boyunv.strategy.example01; +/* + *@description + * + *@author boyunv + *@create 2023/8/14 7:43 + *@version 1.0 + */ + +public class Client { + + public static void main(String[] args) { + Strategy strategyA=new ConcreteStrategyA(); + Context context = new Context(strategyA); + context.algorithm(); + + + } +} diff --git a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example01/ConcreteStrategyA.java b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example01/ConcreteStrategyA.java new file mode 100644 index 0000000000000000000000000000000000000000..a1963d4f37d3ace8de95ccd31542955eb53ad168 --- /dev/null +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example01/ConcreteStrategyA.java @@ -0,0 +1,17 @@ +package com.boyunv.strategy.example01; +/* + *@description + * 具体策略类 + *@author boyunv + *@create 2023/8/14 7:37 + *@version 1.0 + */ + +public class ConcreteStrategyA implements Strategy{ + + @Override + public void algorithm() { + System.out.println("执行策略A"); + + } +} diff --git a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example01/ConcreteStrategyB.java b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example01/ConcreteStrategyB.java new file mode 100644 index 0000000000000000000000000000000000000000..dc541f1efb76def110f711cfe1c4945bf5be49a2 --- /dev/null +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example01/ConcreteStrategyB.java @@ -0,0 +1,17 @@ +package com.boyunv.strategy.example01; +/* + *@description + * 具体策略类 + *@author boyunv + *@create 2023/8/14 7:37 + *@version 1.0 + */ + +public class ConcreteStrategyB implements Strategy{ + + @Override + public void algorithm() { + System.out.println("执行策略B"); + + } +} diff --git a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example01/Context.java b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example01/Context.java new file mode 100644 index 0000000000000000000000000000000000000000..0372fe08c449ec9cda19eeb5589a62ea2567cee6 --- /dev/null +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example01/Context.java @@ -0,0 +1,23 @@ +package com.boyunv.strategy.example01; +/* + *@description + * 上下文类: 策略模式本质是通过context类作为控制单元,对不同的调度策略进行调度分配 + *@author boyunv + *@create 2023/8/14 7:39 + *@version 1.0 + */ + +public class Context { + public Context(Strategy strategy) { + this.strategy = strategy; + } + + //维持一个抽象策略的引用 + private Strategy strategy; + + //调用策略类里面的方法 + public void algorithm(){ + strategy.algorithm(); + } + +} diff --git a/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example01/Strategy.java b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example01/Strategy.java new file mode 100644 index 0000000000000000000000000000000000000000..cf509fddb4a56bd3bcf82ddb49b81557a5b674d1 --- /dev/null +++ b/byv-strategy-patttern-14/src/main/java/com/boyunv/strategy/example01/Strategy.java @@ -0,0 +1,13 @@ +package com.boyunv.strategy.example01; +/* + *@description + * 抽象策略类 + *@author boyunv + *@create 2023/8/14 7:36 + *@version 1.0 + */ + +public interface Strategy { + void algorithm(); + +} diff --git a/img/img_strategy_pattern_struct.png b/img/img_strategy_pattern_struct.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba1939ba525a3c2c0951fd2949c73ae36e39f90 Binary files /dev/null and b/img/img_strategy_pattern_struct.png differ