diff --git a/dev-protocol-design-pattern/README.md b/dev-protocol-design-pattern/README.md index bc29f79..a4cbbec 100644 --- a/dev-protocol-design-pattern/README.md +++ b/dev-protocol-design-pattern/README.md @@ -113,6 +113,51 @@ --- ### 单例模式 + +#### 1 定义与类型 + 定义:保证一个类仅有一个实例,并提供一个全局访问点 + 类型:创建型 +#### 2 适用场景 + 想确保任何情况下都绝对只有一个实例 +#### 3 优点 + 在内存里只有一个实例,减少了内存开销 + 可以避免对资源的多重占用 + 设置了全局访问点,严格控制访问 +#### 4 缺点 + 没有接口,扩展困难 +#### 5 重点 + 私有构造器 + 线程安全 + 延迟加载 + 序列化和反序列化安全 + 反射 +#### 6 单例模式相关的设计模式 + 单例模式和工厂模式 + - 可以把工厂类设计为单例的 + 单例模式和享元模式 + - 享元模式是单例对象的一个工厂 +#### 7 Coding + + + + + + + + + + + + + + + + + + + + + --- @@ -126,8 +171,38 @@ --- ### 外观模式 +#### 1 定义与类型 + 定义: 又叫门面模式,提供了一个统一的接口,用来访问子系统中的一群接口 + 外观模式定义了一个高层接口,让子系统更容易使用 + 类型: 结构型 +#### 2 使用场景 + 子系统越来越复杂,增加外观模式提供简单调用接口 + 构建多层系统结构,利用外观对象作为每层入口,简化层间调用 +#### 3 优点 + 简化了调用过程,无需了解深入子系统,防止带来风险 + 减少系统依赖,松散耦合 + 更好的划分访问层次 + 符合迪米特法则,即最少知道原则 + +#### 4 缺点 + 增加子系统,扩展子系统行为行为很容易引入风险 + 不符合开闭原则 + +#### 5 相关的设计模式 + 外观模式和中介者模式 + - 外观模式关注是外部和子系统的交互 + - 中介者模式关注是子系统内部的交互 + 外观模式和单例模式 + - 外观模式中的独外观对象做成单例对象使用 + 外观模式和抽象工厂模式 + - 外观类可以通过抽象工厂获取子系统的实例 +#### 6 coding + com.baiye.design.pattern.structural.facade + + +--- ### 装饰者模式 diff --git a/dev-protocol-design-pattern/pic/单例-DoubleCheck.png b/dev-protocol-design-pattern/pic/单例-DoubleCheck.png new file mode 100644 index 0000000..cd8e3c1 Binary files /dev/null and b/dev-protocol-design-pattern/pic/单例-DoubleCheck.png differ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/Interpreter.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/Interpreter.java deleted file mode 100644 index 89a7e1f..0000000 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/Interpreter.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.baiye.design.behavioral.interpreter; - -public interface Interpreter { - int interpret(); -} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/chainofresponsibility/Approver.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/chainofresponsibility/Approver.java similarity index 83% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/chainofresponsibility/Approver.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/chainofresponsibility/Approver.java index 88a35b4..92566e6 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/chainofresponsibility/Approver.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/chainofresponsibility/Approver.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.chainofresponsibility; +package com.baiye.design.pattern.behavioral.chainofresponsibility; public abstract class Approver { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/chainofresponsibility/ArticleApprover.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/chainofresponsibility/ArticleApprover.java similarity index 88% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/chainofresponsibility/ArticleApprover.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/chainofresponsibility/ArticleApprover.java index cb81007..69194ef 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/chainofresponsibility/ArticleApprover.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/chainofresponsibility/ArticleApprover.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.chainofresponsibility; +package com.baiye.design.pattern.behavioral.chainofresponsibility; public class ArticleApprover extends Approver{ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/chainofresponsibility/Course.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/chainofresponsibility/Course.java similarity index 91% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/chainofresponsibility/Course.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/chainofresponsibility/Course.java index cc9293b..c10fa37 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/chainofresponsibility/Course.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/chainofresponsibility/Course.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.chainofresponsibility; +package com.baiye.design.pattern.behavioral.chainofresponsibility; public class Course { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/chainofresponsibility/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/chainofresponsibility/Test.java similarity index 89% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/chainofresponsibility/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/chainofresponsibility/Test.java index aa1c36a..909c07c 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/chainofresponsibility/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/chainofresponsibility/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.chainofresponsibility; +package com.baiye.design.pattern.behavioral.chainofresponsibility; public class Test { public static void main(String[] args) { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/chainofresponsibility/VideoApprover.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/chainofresponsibility/VideoApprover.java similarity index 87% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/chainofresponsibility/VideoApprover.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/chainofresponsibility/VideoApprover.java index a09957b..e74d773 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/chainofresponsibility/VideoApprover.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/chainofresponsibility/VideoApprover.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.chainofresponsibility; +package com.baiye.design.pattern.behavioral.chainofresponsibility; public class VideoApprover extends Approver{ @Override diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/AddInterpreter.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/AddInterpreter.java similarity index 90% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/AddInterpreter.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/AddInterpreter.java index 7842b93..4320c81 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/AddInterpreter.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/AddInterpreter.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.interpreter; +package com.baiye.design.pattern.behavioral.interpreter; public class AddInterpreter implements Interpreter { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/Interpreter.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/Interpreter.java new file mode 100644 index 0000000..cc9d3cf --- /dev/null +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/Interpreter.java @@ -0,0 +1,5 @@ +package com.baiye.design.pattern.behavioral.interpreter; + +public interface Interpreter { + int interpret(); +} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/MultiInterpreter.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/MultiInterpreter.java similarity index 90% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/MultiInterpreter.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/MultiInterpreter.java index af31507..b727a48 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/MultiInterpreter.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/MultiInterpreter.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.interpreter; +package com.baiye.design.pattern.behavioral.interpreter; public class MultiInterpreter implements Interpreter{ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/MyExpressionParse.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/MyExpressionParse.java similarity index 96% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/MyExpressionParse.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/MyExpressionParse.java index 0e3945d..f1ec63a 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/MyExpressionParse.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/MyExpressionParse.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.interpreter; +package com.baiye.design.pattern.behavioral.interpreter; import java.util.Stack; diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/NumberInterpreter.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/NumberInterpreter.java similarity index 87% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/NumberInterpreter.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/NumberInterpreter.java index d2b93ed..625cff2 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/NumberInterpreter.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/NumberInterpreter.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.interpreter; +package com.baiye.design.pattern.behavioral.interpreter; public class NumberInterpreter implements Interpreter{ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/OpratorUtil.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/OpratorUtil.java similarity index 91% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/OpratorUtil.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/OpratorUtil.java index ccbdf97..0e3e497 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/OpratorUtil.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/OpratorUtil.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.interpreter; +package com.baiye.design.pattern.behavioral.interpreter; public class OpratorUtil { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/Test.java similarity index 85% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/Test.java index 397b1cb..e68ed23 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/interpreter/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/interpreter/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.interpreter; +package com.baiye.design.pattern.behavioral.interpreter; public class Test { public static void main(String[] args) { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/Course.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/Course.java similarity index 76% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/Course.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/Course.java index b66f8ce..c0d63c3 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/Course.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/Course.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.iterator; +package com.baiye.design.pattern.behavioral.iterator; public class Course { private String name; diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/CourseAggregate.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/CourseAggregate.java similarity index 82% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/CourseAggregate.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/CourseAggregate.java index 1200c8c..aa45c70 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/CourseAggregate.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/CourseAggregate.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.iterator; +package com.baiye.design.pattern.behavioral.iterator; public interface CourseAggregate { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/CourseAggregateImpl.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/CourseAggregateImpl.java similarity index 91% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/CourseAggregateImpl.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/CourseAggregateImpl.java index b470894..3b3e259 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/CourseAggregateImpl.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/CourseAggregateImpl.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.iterator; +package com.baiye.design.pattern.behavioral.iterator; import java.util.ArrayList; import java.util.List; diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/CourseIterator.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/CourseIterator.java similarity index 63% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/CourseIterator.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/CourseIterator.java index 6dbb80f..92cb64e 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/CourseIterator.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/CourseIterator.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.iterator; +package com.baiye.design.pattern.behavioral.iterator; public interface CourseIterator { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/CourseIteratorImpl.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/CourseIteratorImpl.java similarity index 92% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/CourseIteratorImpl.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/CourseIteratorImpl.java index 6f2f5db..1928b26 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/CourseIteratorImpl.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/CourseIteratorImpl.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.iterator; +package com.baiye.design.pattern.behavioral.iterator; import java.util.List; diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/Test.java similarity index 96% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/Test.java index f62823d..db1cfe4 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/iterator/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/iterator/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.iterator; +package com.baiye.design.pattern.behavioral.iterator; public class Test { public static void main(String[] args) { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/mediator/StudyGroup.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/mediator/StudyGroup.java similarity index 81% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/mediator/StudyGroup.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/mediator/StudyGroup.java index bc527b1..0190899 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/mediator/StudyGroup.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/mediator/StudyGroup.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.mediator; +package com.baiye.design.pattern.behavioral.mediator; import java.util.Date; diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/mediator/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/mediator/Test.java similarity index 80% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/mediator/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/mediator/Test.java index 74ce1f1..47fa3c5 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/mediator/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/mediator/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.mediator; +package com.baiye.design.pattern.behavioral.mediator; public class Test { public static void main(String[] args) { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/mediator/User.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/mediator/User.java similarity index 86% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/mediator/User.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/mediator/User.java index 4cc9543..2dc54c7 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/mediator/User.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/mediator/User.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.mediator; +package com.baiye.design.pattern.behavioral.mediator; public class User { private String name; diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/memento/Article.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/memento/Article.java similarity index 96% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/memento/Article.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/memento/Article.java index 756384a..cc47205 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/memento/Article.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/memento/Article.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.memento; +package com.baiye.design.pattern.behavioral.memento; public class Article { private String title; diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/memento/ArticleMemento.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/memento/ArticleMemento.java similarity index 93% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/memento/ArticleMemento.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/memento/ArticleMemento.java index b737c25..757a7f2 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/memento/ArticleMemento.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/memento/ArticleMemento.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.memento; +package com.baiye.design.pattern.behavioral.memento; /** * 快照类 diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/memento/ArticleMementoManager.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/memento/ArticleMementoManager.java similarity index 88% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/memento/ArticleMementoManager.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/memento/ArticleMementoManager.java index 9c0240b..8ce4f1f 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/memento/ArticleMementoManager.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/memento/ArticleMementoManager.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.memento; +package com.baiye.design.pattern.behavioral.memento; import java.util.Stack; diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/memento/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/memento/Test.java similarity index 96% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/memento/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/memento/Test.java index dfcf621..59f12d5 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/memento/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/memento/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.memento; +package com.baiye.design.pattern.behavioral.memento; public class Test { public static void main(String[] args) { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/observer/Course.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/observer/Course.java similarity index 91% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/observer/Course.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/observer/Course.java index d7b08c1..686a293 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/observer/Course.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/observer/Course.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.observer; +package com.baiye.design.pattern.behavioral.observer; import java.util.Observable; diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/observer/Question.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/observer/Question.java similarity index 89% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/observer/Question.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/observer/Question.java index 18ca3d8..b25815e 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/observer/Question.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/observer/Question.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.observer; +package com.baiye.design.pattern.behavioral.observer; public class Question { private String userName; diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/observer/Teacher.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/observer/Teacher.java similarity index 91% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/observer/Teacher.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/observer/Teacher.java index 58e31aa..7cf7328 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/observer/Teacher.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/observer/Teacher.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.observer; +package com.baiye.design.pattern.behavioral.observer; import java.util.Observable; import java.util.Observer; diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/observer/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/observer/Test.java similarity index 91% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/observer/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/observer/Test.java index 5b0178d..59f8601 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/observer/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/observer/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.observer; +package com.baiye.design.pattern.behavioral.observer; public class Test { public static void main(String[] args) { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/CourseVideoContext.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/CourseVideoContext.java similarity index 95% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/CourseVideoContext.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/CourseVideoContext.java index 2b153b7..064d60b 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/CourseVideoContext.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/CourseVideoContext.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.state; +package com.baiye.design.pattern.behavioral.state; public class CourseVideoContext { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/CourseVideoState.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/CourseVideoState.java similarity index 89% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/CourseVideoState.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/CourseVideoState.java index d514fb9..e57e50c 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/CourseVideoState.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/CourseVideoState.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.state; +package com.baiye.design.pattern.behavioral.state; public abstract class CourseVideoState { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/PauseState.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/PauseState.java similarity index 92% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/PauseState.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/PauseState.java index 64ca1a2..0c7cae3 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/PauseState.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/PauseState.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.state; +package com.baiye.design.pattern.behavioral.state; /** diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/PlayState.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/PlayState.java similarity index 91% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/PlayState.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/PlayState.java index c3312a6..9423dfb 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/PlayState.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/PlayState.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.state; +package com.baiye.design.pattern.behavioral.state; public class PlayState extends CourseVideoState{ @Override diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/SpeedState.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/SpeedState.java similarity index 91% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/SpeedState.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/SpeedState.java index 9edb093..35e9e77 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/SpeedState.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/SpeedState.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.state; +package com.baiye.design.pattern.behavioral.state; public class SpeedState extends CourseVideoState{ @Override diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/StopState.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/StopState.java similarity index 90% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/StopState.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/StopState.java index ea2316a..eb5cf23 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/StopState.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/StopState.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.state; +package com.baiye.design.pattern.behavioral.state; public class StopState extends CourseVideoState{ @Override diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/Test.java similarity index 95% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/Test.java index d6d7ca3..760b403 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/state/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/state/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.state; +package com.baiye.design.pattern.behavioral.state; public class Test { public static void main(String[] args) { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/EmptyPromotionStrategy.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/EmptyPromotionStrategy.java similarity index 75% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/EmptyPromotionStrategy.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/EmptyPromotionStrategy.java index 075e31e..0ed9ce7 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/EmptyPromotionStrategy.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/EmptyPromotionStrategy.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.strategy; +package com.baiye.design.pattern.behavioral.strategy; public class EmptyPromotionStrategy implements PromotionStrategy{ @Override diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/FanxianPromotionStrategy.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/FanxianPromotionStrategy.java similarity index 79% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/FanxianPromotionStrategy.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/FanxianPromotionStrategy.java index 881e95e..20a0e1e 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/FanxianPromotionStrategy.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/FanxianPromotionStrategy.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.strategy; +package com.baiye.design.pattern.behavioral.strategy; public class FanxianPromotionStrategy implements PromotionStrategy { @Override diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/LIjianPromotionStrategy.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/LIjianPromotionStrategy.java similarity index 79% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/LIjianPromotionStrategy.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/LIjianPromotionStrategy.java index 68a248f..cff5778 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/LIjianPromotionStrategy.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/LIjianPromotionStrategy.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.strategy; +package com.baiye.design.pattern.behavioral.strategy; public class LIjianPromotionStrategy implements PromotionStrategy{ @Override diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/ManjianPromotionStrategy.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/ManjianPromotionStrategy.java similarity index 77% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/ManjianPromotionStrategy.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/ManjianPromotionStrategy.java index f90705b..337e486 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/ManjianPromotionStrategy.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/ManjianPromotionStrategy.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.strategy; +package com.baiye.design.pattern.behavioral.strategy; public class ManjianPromotionStrategy implements PromotionStrategy{ @Override diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/PromotionActivity.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/PromotionActivity.java similarity index 84% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/PromotionActivity.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/PromotionActivity.java index 1544dbb..0748707 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/PromotionActivity.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/PromotionActivity.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.strategy; +package com.baiye.design.pattern.behavioral.strategy; public class PromotionActivity { private PromotionStrategy promotionStrategy; diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/PromotionStrategy.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/PromotionStrategy.java similarity index 54% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/PromotionStrategy.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/PromotionStrategy.java index 229d53c..179dd93 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/PromotionStrategy.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/PromotionStrategy.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.strategy; +package com.baiye.design.pattern.behavioral.strategy; public interface PromotionStrategy { void doPromotion(); diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/PromotionStrategyFactory.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/PromotionStrategyFactory.java similarity index 95% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/PromotionStrategyFactory.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/PromotionStrategyFactory.java index c2c2c53..77cd4db 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/PromotionStrategyFactory.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/PromotionStrategyFactory.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.strategy; +package com.baiye.design.pattern.behavioral.strategy; import java.util.HashMap; import java.util.Map; diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/Test.java similarity index 93% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/Test.java index 20d83a4..543d8ae 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/strategy/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/strategy/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.strategy; +package com.baiye.design.pattern.behavioral.strategy; public class Test { public static void main(String[] args) { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/templatemethod/ACourse.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/templatemethod/ACourse.java similarity index 93% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/templatemethod/ACourse.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/templatemethod/ACourse.java index 21c1d17..23d6845 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/templatemethod/ACourse.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/templatemethod/ACourse.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.templatemethod; +package com.baiye.design.pattern.behavioral.templatemethod; public abstract class ACourse { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/templatemethod/DesignPatternCourse.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/templatemethod/DesignPatternCourse.java similarity index 83% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/templatemethod/DesignPatternCourse.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/templatemethod/DesignPatternCourse.java index 6bb1e59..e3b7d85 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/templatemethod/DesignPatternCourse.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/templatemethod/DesignPatternCourse.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.templatemethod; +package com.baiye.design.pattern.behavioral.templatemethod; public class DesignPatternCourse extends ACourse{ @Override diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/templatemethod/FECourse.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/templatemethod/FECourse.java similarity index 91% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/templatemethod/FECourse.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/templatemethod/FECourse.java index a897b18..9f732ff 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/templatemethod/FECourse.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/templatemethod/FECourse.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.templatemethod; +package com.baiye.design.pattern.behavioral.templatemethod; public class FECourse extends ACourse{ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/templatemethod/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/templatemethod/Test.java similarity index 89% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/templatemethod/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/templatemethod/Test.java index 9cb02a5..aedfffc 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/templatemethod/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/templatemethod/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.templatemethod; +package com.baiye.design.pattern.behavioral.templatemethod; public class Test { public static void main(String[] args) { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/CodingCourse.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/CodingCourse.java similarity index 87% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/CodingCourse.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/CodingCourse.java index fa53a11..e1b136c 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/CodingCourse.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/CodingCourse.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.visitor; +package com.baiye.design.pattern.behavioral.visitor; public class CodingCourse extends Course{ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/Course.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/Course.java similarity index 82% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/Course.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/Course.java index c94a96b..73541e1 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/Course.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/Course.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.visitor; +package com.baiye.design.pattern.behavioral.visitor; public abstract class Course { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/FreeCourse.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/FreeCourse.java similarity index 71% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/FreeCourse.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/FreeCourse.java index bfa5805..3068297 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/FreeCourse.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/FreeCourse.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.visitor; +package com.baiye.design.pattern.behavioral.visitor; public class FreeCourse extends Course{ @Override diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/IVisitor.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/IVisitor.java similarity index 68% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/IVisitor.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/IVisitor.java index 93c8e64..ecfb6d7 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/IVisitor.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/IVisitor.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.visitor; +package com.baiye.design.pattern.behavioral.visitor; public interface IVisitor { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/Test.java similarity index 91% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/Test.java index c003dff..58163fc 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.visitor; +package com.baiye.design.pattern.behavioral.visitor; import java.util.ArrayList; import java.util.List; diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/Visitor.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/Visitor.java similarity index 92% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/Visitor.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/Visitor.java index 4ac499f..db8d7ba 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/behavioral/visitor/Visitor.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/behavioral/visitor/Visitor.java @@ -1,4 +1,4 @@ -package com.baiye.design.behavioral.visitor; +package com.baiye.design.pattern.behavioral.visitor; public class Visitor implements IVisitor{ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/creational/singleton/lazy/LazyDoubleCheckSingleton.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/creational/singleton/lazy/LazyDoubleCheckSingleton.java new file mode 100644 index 0000000..46dbf71 --- /dev/null +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/creational/singleton/lazy/LazyDoubleCheckSingleton.java @@ -0,0 +1,34 @@ +package com.baiye.design.pattern.creational.singleton.lazy; + +public class LazyDoubleCheckSingleton { + // 使用 volatile 来防止指令重排序 + private volatile static LazyDoubleCheckSingleton lazyDoubleCheckSingleton = null; + + /** + * 私有构造器 + */ + private LazyDoubleCheckSingleton() { + + } + + /** + * 线程不安全 -> 加快锁 + */ + public static LazyDoubleCheckSingleton getInstance() { + if (null == lazyDoubleCheckSingleton) { + // 锁定的是单例的类 + synchronized (LazyDoubleCheckSingleton.class) { + if (null == lazyDoubleCheckSingleton) { + // 1. 分配内存给这个对象 + // 2. 初始化对象 + // 3. 设置 lazyDoubleCheckSingleton 指向刚分配的内存地址 + + // fixme 在 2 3 时候可能被重排序 intra-thread semantics 的说明知道 2-3 互换位置不会改变程序的执行结果,允许重排序可以加快程序的执行性能 + lazyDoubleCheckSingleton = new LazyDoubleCheckSingleton(); + + } + } + } + return lazyDoubleCheckSingleton; + } +} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/creational/singleton/lazy/LazySingleton.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/creational/singleton/lazy/LazySingleton.java new file mode 100644 index 0000000..a6e6e91 --- /dev/null +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/creational/singleton/lazy/LazySingleton.java @@ -0,0 +1,27 @@ +package com.baiye.design.pattern.creational.singleton.lazy; + +/** + * 懒汉式单例模式 + */ +public class LazySingleton { + private static LazySingleton lazySingleton = null; + + /** + * 私有构造器 + */ + private LazySingleton() { + + } + + /** + * 线程不安全 -> 加快锁 + */ + public static LazySingleton getInstance() { + synchronized (LazySingleton.class){ + if (null == lazySingleton) { + lazySingleton = new LazySingleton(); + } + } + return lazySingleton; + } +} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/creational/singleton/lazy/T.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/creational/singleton/lazy/T.java new file mode 100644 index 0000000..8cb8e08 --- /dev/null +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/creational/singleton/lazy/T.java @@ -0,0 +1,9 @@ +package com.baiye.design.pattern.creational.singleton.lazy; + +public class T implements Runnable{ + @Override + public void run() { + LazySingleton lazySingleton = LazySingleton.getInstance(); + System.out.println(Thread.currentThread().getName() + " " + lazySingleton); + } +} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/creational/singleton/lazy/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/creational/singleton/lazy/Test.java new file mode 100644 index 0000000..764e3e7 --- /dev/null +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/creational/singleton/lazy/Test.java @@ -0,0 +1,12 @@ +package com.baiye.design.pattern.creational.singleton.lazy; + +public class Test { + + public static void main(String[] args) { + Thread t1 = new Thread(new T()); + Thread t2 = new Thread(new T()); + t1.start(); + t2.start(); + System.out.println("program end"); + } +} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/objectadapter/Adaptee.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/clazzadapter/Adaptee.java similarity index 64% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/objectadapter/Adaptee.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/clazzadapter/Adaptee.java index 4e73905..ae85037 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/objectadapter/Adaptee.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/clazzadapter/Adaptee.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.adapter.objectadapter; +package com.baiye.design.pattern.structural.adapter.clazzadapter; public class Adaptee { public void adapteeRequest(){ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/clazzadapter/Adapter.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/clazzadapter/Adapter.java similarity index 84% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/clazzadapter/Adapter.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/clazzadapter/Adapter.java index fbe6441..851f25f 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/clazzadapter/Adapter.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/clazzadapter/Adapter.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.adapter.clazzadapter; +package com.baiye.design.pattern.structural.adapter.clazzadapter; /** * 适配器 把Adaptee的方法适配给Target接口 diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/clazzadapter/ConcreteTarget.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/clazzadapter/ConcreteTarget.java similarity index 70% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/clazzadapter/ConcreteTarget.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/clazzadapter/ConcreteTarget.java index 3238aa5..09b045a 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/clazzadapter/ConcreteTarget.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/clazzadapter/ConcreteTarget.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.adapter.clazzadapter; +package com.baiye.design.pattern.structural.adapter.clazzadapter; public class ConcreteTarget implements Target{ @Override diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/clazzadapter/Target.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/clazzadapter/Target.java new file mode 100644 index 0000000..51be962 --- /dev/null +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/clazzadapter/Target.java @@ -0,0 +1,5 @@ +package com.baiye.design.pattern.structural.adapter.clazzadapter; + +public interface Target { + void request(); +} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/clazzadapter/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/clazzadapter/Test.java similarity index 81% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/clazzadapter/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/clazzadapter/Test.java index c3c897f..0d143f7 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/clazzadapter/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/clazzadapter/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.adapter.clazzadapter; +package com.baiye.design.pattern.structural.adapter.clazzadapter; public class Test { public static void main(String[] args) { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/clazzadapter/Adaptee.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/objectadapter/Adaptee.java similarity index 63% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/clazzadapter/Adaptee.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/objectadapter/Adaptee.java index 77c2e9c..3ee6efa 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/clazzadapter/Adaptee.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/objectadapter/Adaptee.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.adapter.clazzadapter; +package com.baiye.design.pattern.structural.adapter.objectadapter; public class Adaptee { public void adapteeRequest(){ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/objectadapter/Adapter.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/objectadapter/Adapter.java similarity index 82% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/objectadapter/Adapter.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/objectadapter/Adapter.java index 514021b..227bf79 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/objectadapter/Adapter.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/objectadapter/Adapter.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.adapter.objectadapter; +package com.baiye.design.pattern.structural.adapter.objectadapter; public class Adapter implements Target{ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/objectadapter/ConcreteTarget.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/objectadapter/ConcreteTarget.java similarity index 70% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/objectadapter/ConcreteTarget.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/objectadapter/ConcreteTarget.java index 20a866a..f0fcf04 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/objectadapter/ConcreteTarget.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/objectadapter/ConcreteTarget.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.adapter.objectadapter; +package com.baiye.design.pattern.structural.adapter.objectadapter; public class ConcreteTarget implements Target{ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/objectadapter/Target.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/objectadapter/Target.java new file mode 100644 index 0000000..d2c4d7a --- /dev/null +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/objectadapter/Target.java @@ -0,0 +1,5 @@ +package com.baiye.design.pattern.structural.adapter.objectadapter; + +public interface Target { + void request(); +} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/objectadapter/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/objectadapter/Test.java similarity index 76% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/objectadapter/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/objectadapter/Test.java index 75b41ff..695ab57 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/objectadapter/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/adapter/objectadapter/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.adapter.objectadapter; +package com.baiye.design.pattern.structural.adapter.objectadapter; public class Test { public static void main(String[] args) { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/ABCBank.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/ABCBank.java similarity index 84% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/ABCBank.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/ABCBank.java index c280940..e996288 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/ABCBank.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/ABCBank.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.bridge; +package com.baiye.design.pattern.structural.bridge; public class ABCBank extends Bank{ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/Account.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/Account.java similarity index 62% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/Account.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/Account.java index bfb817f..0ade36e 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/Account.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/Account.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.bridge; +package com.baiye.design.pattern.structural.bridge; public interface Account { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/Bank.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/Bank.java similarity index 81% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/Bank.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/Bank.java index 9fb1f7d..d2ed79e 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/Bank.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/Bank.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.bridge; +package com.baiye.design.pattern.structural.bridge; public abstract class Bank { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/DepositAccount.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/DepositAccount.java similarity index 85% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/DepositAccount.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/DepositAccount.java index 45b01e8..dbf1a62 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/DepositAccount.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/DepositAccount.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.bridge; +package com.baiye.design.pattern.structural.bridge; public class DepositAccount implements Account{ @Override diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/ICBCBank.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/ICBCBank.java similarity index 84% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/ICBCBank.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/ICBCBank.java index a0f637b..7d9afcb 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/ICBCBank.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/ICBCBank.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.bridge; +package com.baiye.design.pattern.structural.bridge; public class ICBCBank extends Bank{ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/SavingAccount.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/SavingAccount.java similarity index 85% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/SavingAccount.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/SavingAccount.java index 25842ae..b534b4f 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/SavingAccount.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/SavingAccount.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.bridge; +package com.baiye.design.pattern.structural.bridge; public class SavingAccount implements Account{ @Override diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/Test.java similarity index 87% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/Test.java index dc1c16b..ddbb711 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/bridge/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/bridge/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.bridge; +package com.baiye.design.pattern.structural.bridge; public class Test { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/composite/CatalogComponent.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/composite/CatalogComponent.java similarity index 93% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/composite/CatalogComponent.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/composite/CatalogComponent.java index c65f6e4..025b582 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/composite/CatalogComponent.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/composite/CatalogComponent.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.composite; +package com.baiye.design.pattern.structural.composite; public abstract class CatalogComponent { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/composite/Course.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/composite/Course.java similarity index 90% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/composite/Course.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/composite/Course.java index 187f88b..bdaefd5 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/composite/Course.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/composite/Course.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.composite; +package com.baiye.design.pattern.structural.composite; public class Course extends CatalogComponent{ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/composite/CourseCatalog.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/composite/CourseCatalog.java similarity index 93% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/composite/CourseCatalog.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/composite/CourseCatalog.java index 227bff5..c45fada 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/composite/CourseCatalog.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/composite/CourseCatalog.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.composite; +package com.baiye.design.pattern.structural.composite; import java.util.ArrayList; import java.util.List; diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/composite/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/composite/Test.java similarity index 68% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/composite/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/composite/Test.java index 2eff506..5fab4a0 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/composite/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/composite/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.composite; +package com.baiye.design.pattern.structural.composite; public class Test { public static void main(String[] args) { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v1/Battercake.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v1/Battercake.java similarity index 71% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v1/Battercake.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v1/Battercake.java index 27849b7..7f6ddd7 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v1/Battercake.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v1/Battercake.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.decorator.v1; +package com.baiye.design.pattern.structural.decorator.v1; public class Battercake { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v1/BattercakeWithEgg.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v1/BattercakeWithEgg.java similarity index 80% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v1/BattercakeWithEgg.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v1/BattercakeWithEgg.java index d17dae6..fa579f6 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v1/BattercakeWithEgg.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v1/BattercakeWithEgg.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.decorator.v1; +package com.baiye.design.pattern.structural.decorator.v1; public class BattercakeWithEgg extends Battercake{ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v1/BattercakeWithEggSausage.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v1/BattercakeWithEggSausage.java similarity index 81% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v1/BattercakeWithEggSausage.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v1/BattercakeWithEggSausage.java index 74e92a7..a7ad471 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v1/BattercakeWithEggSausage.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v1/BattercakeWithEggSausage.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.decorator.v1; +package com.baiye.design.pattern.structural.decorator.v1; public class BattercakeWithEggSausage extends BattercakeWithEgg{ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v1/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v1/Test.java similarity index 92% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v1/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v1/Test.java index 0b224d1..942da22 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v1/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v1/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.decorator.v1; +package com.baiye.design.pattern.structural.decorator.v1; public class Test { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/ABattercake.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/ABattercake.java similarity index 66% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/ABattercake.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/ABattercake.java index 26575cf..dc5053a 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/ABattercake.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/ABattercake.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.decorator.v2; +package com.baiye.design.pattern.structural.decorator.v2; public abstract class ABattercake { protected abstract String getDesc(); diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/AbstractDecorator.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/AbstractDecorator.java similarity index 87% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/AbstractDecorator.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/AbstractDecorator.java index 4916db6..22645c8 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/AbstractDecorator.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/AbstractDecorator.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.decorator.v2; +package com.baiye.design.pattern.structural.decorator.v2; /** * @author Administrator diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/AbstractDecorator2.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/AbstractDecorator2.java similarity index 91% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/AbstractDecorator2.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/AbstractDecorator2.java index c2c5f3d..01c08c6 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/AbstractDecorator2.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/AbstractDecorator2.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.decorator.v2; +package com.baiye.design.pattern.structural.decorator.v2; /** * 装饰者类的第二种形式 对原装饰者进行修改,扩展到更多的方法 diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/Battercake.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/Battercake.java similarity index 77% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/Battercake.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/Battercake.java index 9c6f8f9..50f144b 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/Battercake.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/Battercake.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.decorator.v2; +package com.baiye.design.pattern.structural.decorator.v2; public class Battercake extends ABattercake{ @Override diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/EggDecorator.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/EggDecorator.java similarity index 85% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/EggDecorator.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/EggDecorator.java index b1fe583..3aecd4a 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/EggDecorator.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/EggDecorator.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.decorator.v2; +package com.baiye.design.pattern.structural.decorator.v2; public class EggDecorator extends AbstractDecorator{ diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/SausageDecorator.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/SausageDecorator.java similarity index 85% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/SausageDecorator.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/SausageDecorator.java index 942fbc2..7d67996 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/SausageDecorator.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/SausageDecorator.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.decorator.v2; +package com.baiye.design.pattern.structural.decorator.v2; public class SausageDecorator extends AbstractDecorator{ public SausageDecorator(ABattercake aBattercake) { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/Test.java similarity index 86% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/Test.java index 96bbdf3..fb98710 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/decorator/v2/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/decorator/v2/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.decorator.v2; +package com.baiye.design.pattern.structural.decorator.v2; public class Test { public static void main(String[] args) { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/GiftExchangeService.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/GiftExchangeService.java new file mode 100644 index 0000000..f5e3188 --- /dev/null +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/GiftExchangeService.java @@ -0,0 +1,21 @@ +package com.baiye.design.pattern.structural.facade; + +public class GiftExchangeService { + // 注入子系统服务 + private QualifyService qualifyService = new QualifyService(); + private PointsPaymentService pointsPaymentService = new PointsPaymentService(); + private ShippingService shippingService = new ShippingService(); + + + public void giftExchange(PointsGift pointsGift) { + if (qualifyService.isAvailable(pointsGift)) { + // 资格校验通过 + if (pointsPaymentService.pay(pointsGift)) { + // 如果支付积分成功 + String shippingOrderNo = shippingService.shipGift(pointsGift); + System.out.println("物流系统下单成功,订单号是: " + shippingOrderNo); + } + } + + } +} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/PointsGift.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/PointsGift.java new file mode 100644 index 0000000..ca538c1 --- /dev/null +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/PointsGift.java @@ -0,0 +1,13 @@ +package com.baiye.design.pattern.structural.facade; + +public class PointsGift { + private String name; + + public PointsGift(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/PointsPaymentService.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/PointsPaymentService.java new file mode 100644 index 0000000..2a997aa --- /dev/null +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/PointsPaymentService.java @@ -0,0 +1,10 @@ +package com.baiye.design.pattern.structural.facade; + +public class PointsPaymentService { + + public boolean pay(PointsGift pointsGift) { + // 扣减积分 + System.out.println("支付" + pointsGift.getName() + "积分成功"); + return true; + } +} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/QualifyService.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/QualifyService.java new file mode 100644 index 0000000..8c7a38a --- /dev/null +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/QualifyService.java @@ -0,0 +1,12 @@ +package com.baiye.design.pattern.structural.facade; + +/** + * 子系统 + */ +public class QualifyService { + + public boolean isAvailable(PointsGift pointsGift) { + System.out.println("校验" + pointsGift.getName() + "积分兑换资格通过,库存通过"); + return true; + } +} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/ShippingService.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/ShippingService.java new file mode 100644 index 0000000..0f2537b --- /dev/null +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/ShippingService.java @@ -0,0 +1,10 @@ +package com.baiye.design.pattern.structural.facade; + +public class ShippingService { + public String shipGift(PointsGift pointsGift) { + // 物流系统的对接逻辑 + System.out.println(pointsGift.getName() + "进入物流系统"); + String shippingOrderNo = "666"; + return shippingOrderNo; + } +} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/Test.java new file mode 100644 index 0000000..228afab --- /dev/null +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/facade/Test.java @@ -0,0 +1,14 @@ +package com.baiye.design.pattern.structural.facade; + +public class Test { + public static void main(String[] args) { + PointsGift t = new PointsGift("T"); + GiftExchangeService giftExchangeService = new GiftExchangeService(); + +// giftExchangeService.setQualifyService(new QualifyService()); +// giftExchangeService.setPointsPaymentService(new PointsPaymentService()); +// giftExchangeService.setShippingService(new ShippingService()); + + giftExchangeService.giftExchange(t); + } +} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/flyweight/Employee.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/flyweight/Employee.java new file mode 100644 index 0000000..58dda6d --- /dev/null +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/flyweight/Employee.java @@ -0,0 +1,5 @@ +package com.baiye.design.pattern.structural.flyweight; + +public interface Employee { + void reprot(); +} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/flyweight/EmployeeFactory.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/flyweight/EmployeeFactory.java similarity index 93% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/flyweight/EmployeeFactory.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/flyweight/EmployeeFactory.java index c5447ac..f104e06 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/flyweight/EmployeeFactory.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/flyweight/EmployeeFactory.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.flyweight; +package com.baiye.design.pattern.structural.flyweight; import java.util.HashMap; import java.util.Map; diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/flyweight/Manager.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/flyweight/Manager.java similarity index 89% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/flyweight/Manager.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/flyweight/Manager.java index f80311e..2bc906c 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/flyweight/Manager.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/flyweight/Manager.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.flyweight; +package com.baiye.design.pattern.structural.flyweight; public class Manager implements Employee{ @Override diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/flyweight/Test.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/flyweight/Test.java similarity index 93% rename from dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/flyweight/Test.java rename to dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/flyweight/Test.java index b94fd30..0b319c9 100644 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/flyweight/Test.java +++ b/dev-protocol-design-pattern/src/main/java/com/baiye/design/pattern/structural/flyweight/Test.java @@ -1,4 +1,4 @@ -package com.baiye.design.structural.flyweight; +package com.baiye.design.pattern.structural.flyweight; public class Test { diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/clazzadapter/Target.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/clazzadapter/Target.java deleted file mode 100644 index 273f805..0000000 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/clazzadapter/Target.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.baiye.design.structural.adapter.clazzadapter; - -public interface Target { - void request(); -} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/objectadapter/Target.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/objectadapter/Target.java deleted file mode 100644 index b192af0..0000000 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/adapter/objectadapter/Target.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.baiye.design.structural.adapter.objectadapter; - -public interface Target { - void request(); -} diff --git a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/flyweight/Employee.java b/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/flyweight/Employee.java deleted file mode 100644 index 53799d3..0000000 --- a/dev-protocol-design-pattern/src/main/java/com/baiye/design/structural/flyweight/Employee.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.baiye.design.structural.flyweight; - -public interface Employee { - void reprot(); -} diff --git a/dev-protocol-extend/java-call-other/README.md b/dev-protocol-extend/java-call-other/README.md new file mode 100644 index 0000000..1161732 --- /dev/null +++ b/dev-protocol-extend/java-call-other/README.md @@ -0,0 +1,20 @@ +# Java 对外部的调用 + +## Java 中调用 Python动态传入参数 + +### 1 使用场景 + +- 在定时任务调度场景中会用到,需要定时去触发某个作业,作业需要支撑业务线丰富的场景,可以是接口调用、Shell 脚本执行、推送 MQ、Python 脚本执行等。 +- Python 拥有非常丰富的第三方类库,有些功能用 Python 来实现的话,可能仅仅需要引入一下包,几行代码就搞定了。 + +### 2 官网地址 +- 官网地址:https://www.jython.org/ +- Github 地址:https://github.com/jython/jython + +### 3 准备步骤 +- 导入依赖 +- 需要在你的机器上先安装好 Python 环境 +- 新建单元测试,通过 Java 代码直接执行 Python 语句: + +### 4. 代码地址 +- test目录下 (com.baiye.demo1) \ No newline at end of file diff --git a/dev-protocol-extend/java-call-other/pom.xml b/dev-protocol-extend/java-call-other/pom.xml new file mode 100644 index 0000000..a3776f1 --- /dev/null +++ b/dev-protocol-extend/java-call-other/pom.xml @@ -0,0 +1,35 @@ + + + + dev-protocol + org.example + 1.0-SNAPSHOT + ../../pom.xml + + 4.0.0 + + java-call-other + + + 8 + 8 + + + + + + org.python + jython-standalone + 2.7.2 + + + + junit + junit + test + + + + \ No newline at end of file diff --git a/dev-protocol-extend/java-call-other/src/test/java/com/baiye/demo1/JavaCallPythonSimpleTest.java b/dev-protocol-extend/java-call-other/src/test/java/com/baiye/demo1/JavaCallPythonSimpleTest.java new file mode 100644 index 0000000..75da82a --- /dev/null +++ b/dev-protocol-extend/java-call-other/src/test/java/com/baiye/demo1/JavaCallPythonSimpleTest.java @@ -0,0 +1,101 @@ +package com.baiye.demo1; + + +import org.junit.Test; +import org.python.core.Py; +import org.python.core.PyFunction; +import org.python.core.PyObject; +import org.python.core.PyString; +import org.python.util.PythonInterpreter; + +import java.io.BufferedReader; +import java.io.InputStreamReader; + +public class JavaCallPythonSimpleTest { + + /** + * 直接执行 python 语句 + */ + @Test + public void executePython() { + // 一条简单的 python 语句,打印 Hello world ! + String py = "print('Hello world!')"; + + PythonInterpreter interpreter = new PythonInterpreter(); + // 执行 Python 语句 + interpreter.exec(py); + } + + /** + * 通过执行 python 文件 + */ + @Test + public void executePythonFile() { + // 定义脚本路径 - 这里使用的是绝对路径 + String path = "C:\\Users\\Administrator\\Desktop\\study_pro\\dev-protocol\\dev-protocol-extend\\java-call-python\\src\\test\\java\\com\\baiye\\demo1\\test.py"; + + PythonInterpreter interpreter = new PythonInterpreter(); + // 执行脚本文件 + interpreter.execfile(path); + } + + /** + * 另外一种方式:Runtime.getRuntime() 执行 python 脚本文件 + */ + @Test + public void executePythonFile2() { + Process proc; + BufferedReader reader; + try { + // 直接执行 python 命令的方式来执行脚本 + proc = Runtime.getRuntime().exec("python C:\\Users\\Administrator\\Desktop\\study_pro\\dev-protocol\\dev-protocol-extend\\java-call-python\\src\\test\\java\\com\\baiye\\demo1\\test.py"); + reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); + + String line = null; + while ((line = reader.readLine()) != null) { + // 打印输出 + System.out.println(line); + } + + reader.close(); + proc.waitFor(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 调用 Python 脚本调用某个函数,并动态传入参数,打印结果 + * + * 通过 Jython 去调用 test1.py 的 sendEmail 函数: + * + * ps: 一定要在 python 文件中加入字符集编码 # -*- coding: utf-8 -*- + * ps: 详细参考:https://peps.python.org/pep-0263/ + * ps: QQ邮箱可能会把这种邮件判定为垃圾邮件,控制台会报错为500 http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=20022&&no=1000726: + * ps: 如果收不到也可以将发送者的邮箱地址设置为 QQ 邮件白名单。 + */ + @Test + public void executePythonFunction() { + PythonInterpreter interpreter = new PythonInterpreter(); + // 指定指定路径下的 python 脚本 + interpreter.execfile("C:\\Users\\Administrator\\Desktop\\study_pro\\dev-protocol\\dev-protocol-extend\\java-call-python\\src\\test\\java\\com\\baiye\\demo1\\test1.py"); + + // 指定需要调用的函数 + PyFunction function = interpreter.get("sendEmail", PyFunction.class); + // ↓↓↓↓↓↓↓↓ 需要传入的参数 ↓↓↓↓↓↓↓↓ + // 邮件接受者 + PyString receiver = Py.newStringOrUnicode("xxx@qq.com"); + // 邮件主题 + PyString subject = Py.newStringOrUnicode("打个招呼【动态参数】"); + // 邮件内容 + PyString content = Py.newStringOrUnicode("我是犬小哈【动态参数】"); + + // 调用 + PyObject pyObject = function.__call__(receiver, subject, content); + + // 打印返回结果 + System.out.printf("result: %s%n", pyObject); + } + + +} diff --git a/dev-protocol-extend/java-call-other/src/test/java/com/baiye/demo1/test.py b/dev-protocol-extend/java-call-other/src/test/java/com/baiye/demo1/test.py new file mode 100644 index 0000000..103fee8 --- /dev/null +++ b/dev-protocol-extend/java-call-other/src/test/java/com/baiye/demo1/test.py @@ -0,0 +1 @@ +print('Hello world by file !') \ No newline at end of file diff --git a/dev-protocol-extend/java-call-other/src/test/java/com/baiye/demo1/test1.py b/dev-protocol-extend/java-call-other/src/test/java/com/baiye/demo1/test1.py new file mode 100644 index 0000000..004fcb8 --- /dev/null +++ b/dev-protocol-extend/java-call-other/src/test/java/com/baiye/demo1/test1.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +import smtplib +from email.mime.text import MIMEText + +# 邮件服务器地址 +mail_host = 'smtp.qq.com' +# 邮件服务器用户名 +mail_user = 'xxx@qq.com' +# 邮件服务器登录密码(有些是授权码) +mail_pwd = 'xxx' +# 邮件发送者 +sender = 'xxx@qq.com' + +def sendEmail(receiver, subject, content): + """ + 发送邮件 + :param receiver: 接收者 + :param subject: 邮件主题 + :param content: 邮件内容 + :return: + """ + message = MIMEText(content, 'plain', 'utf-8') + # 邮件主题 + message['Subject'] = subject + # 发送方 + message['From'] = sender + # 接收方 + message['To'] = receiver + + try: + # 连接到服务器 + smtp = smtplib.SMTP_SSL(mail_host) + # 登录服务器 + smtp.login(mail_user, mail_pwd) + # 发送 + smtp.sendmail(sender, receiver, message.as_string()) + # 推出 + smtp.quit() + return 'send email success ...' + except smtplib.SMTPException as e: + print('error', e) + + +if __name__ == '__main__': + # 邮件接受者 + receiver = 'xxx@qq.com' + # 邮件主题 + subject = '打个招呼' + # 邮件内容 + content = '我是犬小哈' + sendEmail(receiver, subject, content) \ No newline at end of file diff --git a/dev-protocol-extend/pom.xml b/dev-protocol-extend/pom.xml new file mode 100644 index 0000000..cce4411 --- /dev/null +++ b/dev-protocol-extend/pom.xml @@ -0,0 +1,20 @@ + + + + dev-protocol + org.example + 1.0-SNAPSHOT + + 4.0.0 + + dev-protocol-extend + pom + + + 8 + 8 + + + \ No newline at end of file diff --git a/dev-protocol-springboot/pom.xml b/dev-protocol-springboot/pom.xml new file mode 100644 index 0000000..c15f99e --- /dev/null +++ b/dev-protocol-springboot/pom.xml @@ -0,0 +1,19 @@ + + + + dev-protocol + org.example + 1.0-SNAPSHOT + + 4.0.0 + + dev-protocol-springboot + + + 8 + 8 + + + \ No newline at end of file diff --git a/dev-protocol-springboot/src/main/java/com/baiye/retry/file/README.md b/dev-protocol-springboot/src/main/java/com/baiye/retry/file/README.md new file mode 100644 index 0000000..327fa55 --- /dev/null +++ b/dev-protocol-springboot/src/main/java/com/baiye/retry/file/README.md @@ -0,0 +1,92 @@ +## 零侵入性:一个注解,优雅的实现循环重试功能 + +### 1 工作场景 +- 在实际工作中,重处理是一个非常常见的场景,比如: + - 发送消息失败 + - 调用远程服务失败(这个可以直接使用SpringCloud的组件机制实现) + - 争抢锁失败 +- spring-retry却可以通过注解,在不入侵原有业务逻辑代码的方式下,优雅的实现重处理功能 + +### 2 @Retryable是什么 +- spring系列的spring-retry是另一个实用程序模块,可以帮助我们以标准方式处理任何特定操作的重试 +- 在spring-retry中,所有配置都是基于简单注释的 + +### 3 使用步骤 +- pom依赖 +```xml + + org.springframework.retry + spring-retry + +``` +- 启用@Retryable +```java +// 开启支持 +@EnableRetry +@SpringBootApplication +public class HelloApplication { + + public static void main(String[] args) { + SpringApplication.run(HelloApplication.class, args); + } + +} +``` +- 方法上添加@Retryable +```java +import com.mail.elegant.service.TestRetryService; +import org.springframework.retry.annotation.Backoff; +import org.springframework.retry.annotation.Retryable; +import org.springframework.stereotype.Service; +import java.time.LocalTime; + +@Service +public class TestRetryServiceImpl implements TestRetryService { + + @Override + // 在这里添加 + @Retryable(value = Exception.class,maxAttempts = 3,backoff = @Backoff(delay = 2000,multiplier = 1.5)) + public int test(int code) throws Exception{ + System.out.println("test被调用,时间:"+LocalTime.now()); + if (code==0){ + throw new Exception("情况不对头!"); + } + System.out.println("test被调用,情况对头了!"); + + return 200; + } +} +``` +- 来简单解释一下注解中几个参数的含义: + - value:抛出指定异常才会重试 + - include:和value一样,默认为空,当exclude也为空时,默认所有异常 + - exclude:指定不处理的异常 + - maxAttempts:最大重试次数,默认3次 + - backoff:重试等待策略 + - 默认使用@Backoff,@Backoff的value默认为1000L,我们设置为2000L; + - multiplier(指定延迟倍数)默认为0,表示固定暂停1秒后进行重试,如果把multiplier设置为1.5,则第一次重试为2秒,第二次为3秒,第三次为4.5秒。 +- 当重试耗尽时还是失败,会出现什么情况呢? + - 当重试耗尽时,RetryOperations可以将控制传递给另一个回调,即RecoveryCallback + - Spring-Retry还提供了@Recover注解,用于@Retryable重试失败后处理方法 + - 如果不需要回调方法,可以直接不写回调方法,那么实现的效果是,重试次数完了后,如果还是没成功没符合业务判断,就抛出异常 + +### 4 @Recover +```java +@Recover +public int recover(Exception e, int code){ + System.out.println("回调方法执行!!!!"); + //记日志到数据库 或者调用其余的方法 + return 400; +} +``` +- 可以看到传参里面写的是 Exception e,这个是作为回调的接头暗号(重试次数用完了,还是失败,我们抛出这个Exception e通知触发这个回调方法) +- 对于@Recover注解的方法,需要特别注意的是: + - 方法的返回值必须与@Retryable方法一致 + - 方法的第一个参数,必须是Throwable类型的,建议是与@Retryable配置的异常一致,其他的参数,需要哪个参数,写进去就可以了(@Recover方法中有的) + - 该回调方法与重试方法写在同一个实现类里面 + +### 5 注意事项 +- 由于是基于AOP实现,所以不支持类里自调用方法 +- 如果重试失败需要给@Recover注解的方法做后续处理,那这个重试的方法不能有返回值,只能是void +- 方法内不能使用try catch,只能往外抛异常 +- @Recover注解来开启重试失败后调用的方法(注意,需跟重处理方法在同一个类中),此注解注释的方法参数一定要是@Retryable抛出的异常,否则无法识别,可以在该方法中进行日志处理。 \ No newline at end of file diff --git a/dev-protocol-springboot/src/main/java/com/baiye/shutdown/file/README.md b/dev-protocol-springboot/src/main/java/com/baiye/shutdown/file/README.md new file mode 100644 index 0000000..774c868 --- /dev/null +++ b/dev-protocol-springboot/src/main/java/com/baiye/shutdown/file/README.md @@ -0,0 +1,437 @@ +## Spring Boot 优雅停机 + +### 1 概念 +- 为确保应用关闭时,通知应用进程释放所占用的资源 + - 线程池,shutdown(不接受新任务等待处理完)还是shutdownNow(调用 Thread.interrupt进行中断) + - socket 链接,比如:netty、mq + - 告知注册中心快速下线(靠心跳机制客服早都跳起来了),比如:eureka + - 清理临时文件,比如:poi + - 各种堆内堆外内存释放 +- 进程强制终止问题 + - 数据丢失或者终端无法恢复到正常状态 + - 在分布式环境下还可能导致数据不一致的情况 + +### 2 kill指令 +- kill -9 pid 可以模拟了一次系统宕机,系统断电等极端情况 +- 而kill -15 pid 则是等待应用关闭,执行阻塞操作,有时候也会出现无法关闭应用的情况 +```shell +#查看jvm进程pid +jps +#列出所有信号名称 +kill -l + +# Windows下信号常量值 +# 简称 全称 数值 +# INT SIGINT 2 Ctrl+C中断 +# ILL SIGILL 4 非法指令 +# FPE SIGFPE 8 floating point exception(浮点异常) +# SEGV SIGSEGV 11 segment violation(段错误) +# TERM SIGTERM 5 Software termination signal from kill(Kill发出的软件终止) +# BREAK SIGBREAK 21 Ctrl-Break sequence(Ctrl+Break中断) +# ABRT SIGABRT 22 abnormal termination triggered by abort call(Abort) + +#linux信号常量值 +# 简称 全称 数值 +# HUP SIGHUP 1 终端断线 +# INT SIGINT 2 中断(同 Ctrl + C) +# QUIT SIGQUIT 3 退出(同 Ctrl + \) +# KILL SIGKILL 9 强制终止 +# TERM SIGTERM 15 终止 +# CONT SIGCONT 18 继续(与STOP相反, fg/bg命令) +# STOP SIGSTOP 19 暂停(同 Ctrl + Z) +#.... + +#可以理解为操作系统从内核级别强行杀死某个进程 +kill -9 pid +#理解为发送一个通知,等待应用主动关闭 +kill -15 pid +#也支持信号常量值全称或简写(就是去掉SIG后) +kill -l KILL +``` +- 总结: Java程序终止是让JVM接收到Linux信号量 +- 思考:jvm是如何接受处理linux信号量的? +- 回答:当然是在jvm启动时就加载了自定义SignalHandler,关闭jvm时触发对应的handle。 +- 代码分析 + +```java +public interface SignalHandler { + SignalHandler SIG_DFL = new NativeSignalHandler(0L); + SignalHandler SIG_IGN = new NativeSignalHandler(1L); + + void handle(Signal var1); +} + +class Terminator { + private static SignalHandler handler = null; + + Terminator() { + } + + //jvm设置SignalHandler,在System.initializeSystemClass中触发 + static void setup() { + if (handler == null) { + SignalHandler var0 = new SignalHandler() { + @Override + public void handle(Signal var1) { + Shutdown.exit(var1.getNumber() + 128);//调用Shutdown.exit + } + }; + handler = var0; + + try { + Signal.handle(new Signal("INT"), var0);//中断时 + } catch (IllegalArgumentException var3) { + ; + } + + try { + Signal.handle(new Signal("TERM"), var0);//终止时 + } catch (IllegalArgumentException var2) { + ; + } + + } + } +} +``` +### 3 核心原理代码 Runtime.addShutdownHook +- 在了解Shutdown.exit之前,先看Runtime.getRuntime().addShutdownHook(shutdownHook); 则是为jvm中增加一个关闭的钩子,当jvm关闭的时候调用。 +- Java原生利用Hock来做 +```java +public class Runtime { + public void addShutdownHook(Thread hook) { + SecurityManager sm = System.getSecurityManager(); + if (sm != null) { + sm.checkPermission(new RuntimePermission("shutdownHooks")); + } + ApplicationShutdownHooks.add(hook); + } +} +class ApplicationShutdownHooks { + /* The set of registered hooks */ + private static IdentityHashMap hooks; + static synchronized void add(Thread hook) { + if(hooks == null) + throw new IllegalStateException("Shutdown in progress"); + + if (hook.isAlive()) + throw new IllegalArgumentException("Hook already running"); + + if (hooks.containsKey(hook)) + throw new IllegalArgumentException("Hook previously registered"); + + hooks.put(hook, hook); + } +} +//它含数据结构和逻辑管理虚拟机关闭序列 +class Shutdown { + /* Shutdown 系列状态*/ + private static final int RUNNING = 0; + private static final int HOOKS = 1; + private static final int FINALIZERS = 2; + private static int state = RUNNING; + /* 是否应该运行所以finalizers来exit? */ + private static boolean runFinalizersOnExit = false; + // 系统关闭钩子注册一个预定义的插槽. + // 关闭钩子的列表如下: + // (0) Console restore hook + // (1) Application hooks + // (2) DeleteOnExit hook + private static final int MAX_SYSTEM_HOOKS = 10; + private static final Runnable[] hooks = new Runnable[MAX_SYSTEM_HOOKS]; + // 当前运行关闭钩子的钩子的索引 + private static int currentRunningHook = 0; + /* 前面的静态字段由这个锁保护 */ + private static class Lock { }; + private static Object lock = new Lock(); + + /* 为native halt方法提供锁对象 */ + private static Object haltLock = new Lock(); + + static void add(int slot, boolean registerShutdownInProgress, Runnable hook) { + synchronized (lock) { + if (hooks[slot] != null) + throw new InternalError("Shutdown hook at slot " + slot + " already registered"); + + if (!registerShutdownInProgress) {//执行shutdown过程中不添加hook + if (state > RUNNING)//如果已经在执行shutdown操作不能添加hook + throw new IllegalStateException("Shutdown in progress"); + } else {//如果hooks已经执行完毕不能再添加hook。如果正在执行hooks时,添加的槽点小于当前执行的槽点位置也不能添加 + if (state > HOOKS || (state == HOOKS && slot <= currentRunningHook)) + throw new IllegalStateException("Shutdown in progress"); + } + + hooks[slot] = hook; + } + } + /* 执行所有注册的hooks + */ + private static void runHooks() { + for (int i=0; i < MAX_SYSTEM_HOOKS; i++) { + try { + Runnable hook; + synchronized (lock) { + // acquire the lock to make sure the hook registered during + // shutdown is visible here. + currentRunningHook = i; + hook = hooks[i]; + } + if (hook != null) hook.run(); + } catch(Throwable t) { + if (t instanceof ThreadDeath) { + ThreadDeath td = (ThreadDeath)t; + throw td; + } + } + } + } + /* 关闭JVM的操作 + */ + static void halt(int status) { + synchronized (haltLock) { + halt0(status); + } + } + //JNI方法 + static native void halt0(int status); + // shutdown的执行顺序:runHooks > runFinalizersOnExit + private static void sequence() { + synchronized (lock) { + /* Guard against the possibility of a daemon thread invoking exit + * after DestroyJavaVM initiates the shutdown sequence + */ + if (state != HOOKS) return; + } + runHooks(); + boolean rfoe; + synchronized (lock) { + state = FINALIZERS; + rfoe = runFinalizersOnExit; + } + if (rfoe) runAllFinalizers(); + } + //Runtime.exit时执行,runHooks > runFinalizersOnExit > halt + static void exit(int status) { + boolean runMoreFinalizers = false; + synchronized (lock) { + if (status != 0) runFinalizersOnExit = false; + switch (state) { + case RUNNING: /* Initiate shutdown */ + state = HOOKS; + break; + case HOOKS: /* Stall and halt */ + break; + case FINALIZERS: + if (status != 0) { + /* Halt immediately on nonzero status */ + halt(status); + } else { + /* Compatibility with old behavior: + * Run more finalizers and then halt + */ + runMoreFinalizers = runFinalizersOnExit; + } + break; + } + } + if (runMoreFinalizers) { + runAllFinalizers(); + halt(status); + } + synchronized (Shutdown.class) { + /* Synchronize on the class object, causing any other thread + * that attempts to initiate shutdown to stall indefinitely + */ + sequence(); + halt(status); + } + } + //shutdown操作,与exit不同的是不做halt操作(关闭JVM) + static void shutdown() { + synchronized (lock) { + switch (state) { + case RUNNING: /* Initiate shutdown */ + state = HOOKS; + break; + case HOOKS: /* Stall and then return */ + case FINALIZERS: + break; + } + } + synchronized (Shutdown.class) { + sequence(); + } + } +} +``` +### 4 Spring中进行的处理和封装 spring 3.2.12 +- 在spring中通过ContextClosedEvent事件来触发一些动作(可以拓展),主要通过LifecycleProcessor.onClose来做stopBeans。 +- 由此可见spring也基于jvm做了拓展。 +```java +public abstract class AbstractApplicationContext extends DefaultResourceLoader { + public void registerShutdownHook() { + if (this.shutdownHook == null) { + // No shutdown hook registered yet. + this.shutdownHook = new Thread() { + @Override + public void run() { + doClose(); + } + }; + Runtime.getRuntime().addShutdownHook(this.shutdownHook); + } + } + protected void doClose() { + boolean actuallyClose; + synchronized (this.activeMonitor) { + actuallyClose = this.active && !this.closed; + this.closed = true; + } + + if (actuallyClose) { + if (logger.isInfoEnabled()) { + logger.info("Closing " + this); + } + + LiveBeansView.unregisterApplicationContext(this); + + try { + //发布应用内的关闭事件 + publishEvent(new ContextClosedEvent(this)); + } + catch (Throwable ex) { + logger.warn("Exception thrown from ApplicationListener handling ContextClosedEvent", ex); + } + + // 停止所有的Lifecycle beans. + try { + getLifecycleProcessor().onClose(); + } + catch (Throwable ex) { + logger.warn("Exception thrown from LifecycleProcessor on context close", ex); + } + + // 销毁spring 的 BeanFactory可能会缓存单例的 Bean. + destroyBeans(); + + // 关闭当前应用上下文(BeanFactory) + closeBeanFactory(); + + // 执行子类的关闭逻辑 + onClose(); + + synchronized (this.activeMonitor) { + this.active = false; + } + } + } +} +public interface LifecycleProcessor extends Lifecycle { + /** + * Notification of context refresh, e.g. for auto-starting components. + */ + void onRefresh(); + + /** + * Notification of context close phase, e.g. for auto-stopping components. + */ + void onClose(); +} +``` +### 5 Spring boot中的扩展 +- 到这里就进入重点了,spring boot中有spring-boot-starter-actuator 模块提供了一个 restful 接口,用于优雅停机。 +- 执行请求 curl -X POST http://127.0.0.1:8088/shutdown ,待关闭成功则返回提示。 +- 注:线上环境该url需要设置权限,可配合 spring-security使用或在nginx中限制内网访问 +```properties +#启用shutdown +endpoints.shutdown.enabled=true +#禁用密码验证 +endpoints.shutdown.sensitive=false +#可统一指定所有endpoints的路径 +management.context-path=/manage +#指定管理端口和IP +management.port=8088 +management.address=127.0.0.1 + +#开启shutdown的安全验证(spring-security) +endpoints.shutdown.sensitive=true +#验证用户名 +security.user.name=admin +#验证密码 +security.user.password=secret +#角色 +management.security.role=SUPERUSER +``` +- spring boot的shutdown原理也不复杂,其实还是通过调用AbstractApplicationContext.close实现的。 +```java +@ConfigurationProperties( + prefix = "endpoints.shutdown" +) +public class ShutdownMvcEndpoint extends EndpointMvcAdapter { + public ShutdownMvcEndpoint(ShutdownEndpoint delegate) { + super(delegate); + } + //post请求 + @PostMapping( + produces = {"application/vnd.spring-boot.actuator.v1+json", "application/json"} + ) + @ResponseBody + public Object invoke() { + return !this.getDelegate().isEnabled() ? new ResponseEntity(Collections.singletonMap("message", "This endpoint is disabled"), HttpStatus.NOT_FOUND) : super.invoke(); + } +} +@ConfigurationProperties( + prefix = "endpoints.shutdown" +) +public class ShutdownEndpoint extends AbstractEndpoint> implements ApplicationContextAware { + private static final Map NO_CONTEXT_MESSAGE = Collections.unmodifiableMap(Collections.singletonMap("message", "No context to shutdown.")); + private static final Map SHUTDOWN_MESSAGE = Collections.unmodifiableMap(Collections.singletonMap("message", "Shutting down, bye...")); + private ConfigurableApplicationContext context; + + public ShutdownEndpoint() { + super("shutdown", true, false); + } + //执行关闭 + public Map invoke() { + if (this.context == null) { + return NO_CONTEXT_MESSAGE; + } else { + boolean var6 = false; + + Map var1; + + class NamelessClass_1 implements Runnable { + NamelessClass_1() { + } + + public void run() { + try { + Thread.sleep(500L); + } catch (InterruptedException var2) { + Thread.currentThread().interrupt(); + } + //这个调用的就是AbstractApplicationContext.close + ShutdownEndpoint.this.context.close(); + } + } + + try { + var6 = true; + var1 = SHUTDOWN_MESSAGE; + var6 = false; + } finally { + if (var6) { + Thread thread = new Thread(new NamelessClass_1()); + thread.setContextClassLoader(this.getClass().getClassLoader()); + thread.start(); + } + } + + Thread thread = new Thread(new NamelessClass_1()); + thread.setContextClassLoader(this.getClass().getClassLoader()); + thread.start(); + return var1; + } + } +} +``` \ No newline at end of file diff --git a/pom.xml b/pom.xml index a5df16b..137d91e 100644 --- a/pom.xml +++ b/pom.xml @@ -22,6 +22,9 @@ jpa/dev-protocol-jpa-auditing3 jpa/dev-protocol-jpa-entity-callback dev-protocol-design-pattern + dev-protocol-springboot + dev-protocol-extend + dev-protocol-extend/java-call-other