diff --git a/bootstrap/pom.xml b/bootstrap/pom.xml
index c563ea1..7399282 100644
--- a/bootstrap/pom.xml
+++ b/bootstrap/pom.xml
@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- forever
+ type-demo
com.love.qn
1.0.0
@@ -54,4 +54,4 @@
-
\ No newline at end of file
+
diff --git a/common/pom.xml b/common/pom.xml
index 6c6e82b..84d4dd5 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- forever
+ type-demo
com.love.qn
1.0.0
../pom.xml
diff --git a/dal/pom.xml b/dal/pom.xml
index e9ffd77..54082dd 100644
--- a/dal/pom.xml
+++ b/dal/pom.xml
@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- forever
+ type-demo
com.love.qn
1.0.0
@@ -49,4 +49,4 @@
-
\ No newline at end of file
+
diff --git a/pom.xml b/pom.xml
index c90a45a..27bdde7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,8 +7,9 @@
spring-boot-starter-parent
2.3.3.RELEASE
+ type-demo
com.love.qn
- forever
+ type-demo
1.0.0
pom
diff --git a/sjms/pom.xml b/sjms/pom.xml
index b42a492..2ba007f 100644
--- a/sjms/pom.xml
+++ b/sjms/pom.xml
@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- forever
+ type-demo
com.love.qn
1.0.0
diff --git a/sjms/src/main/java/com/quinn/sjms/adapter/Adaptee.java b/sjms/src/main/java/com/quinn/sjms/adapter/Adaptee.java
new file mode 100644
index 0000000..a316e2d
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/adapter/Adaptee.java
@@ -0,0 +1,9 @@
+package com.quinn.sjms.adapter;
+
+public class Adaptee {
+
+ public void doSomething(){
+ System.out.println("源角色");
+ }
+
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/adapter/Adapter.java b/sjms/src/main/java/com/quinn/sjms/adapter/Adapter.java
new file mode 100644
index 0000000..9797f50
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/adapter/Adapter.java
@@ -0,0 +1,8 @@
+package com.quinn.sjms.adapter;
+
+public class Adapter extends Adaptee implements Target{
+ @Override
+ public void request() {
+ super.doSomething();
+ }
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/adapter/AdapterClient.java b/sjms/src/main/java/com/quinn/sjms/adapter/AdapterClient.java
new file mode 100644
index 0000000..e5bbe06
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/adapter/AdapterClient.java
@@ -0,0 +1,15 @@
+package com.quinn.sjms.adapter;
+
+public class AdapterClient {
+
+ public static void main(String[] args) {
+ Target target = new TargetImpl();
+ target.request();
+
+ //现在增加了适配器角色后的业务逻辑
+ Target target2 = new Adapter();
+ target2.request();
+
+ }
+
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/adapter/Target.java b/sjms/src/main/java/com/quinn/sjms/adapter/Target.java
new file mode 100644
index 0000000..3160b56
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/adapter/Target.java
@@ -0,0 +1,7 @@
+package com.quinn.sjms.adapter;
+
+public interface Target {
+
+ public void request();
+
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/adapter/TargetImpl.java b/sjms/src/main/java/com/quinn/sjms/adapter/TargetImpl.java
new file mode 100644
index 0000000..1471df0
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/adapter/TargetImpl.java
@@ -0,0 +1,8 @@
+package com.quinn.sjms.adapter;
+
+public class TargetImpl implements Target {
+ @Override
+ public void request() {
+ System.out.println("call me to help u");
+ }
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/chain/Handler.java b/sjms/src/main/java/com/quinn/sjms/chain/Handler.java
new file mode 100644
index 0000000..a044aa1
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/chain/Handler.java
@@ -0,0 +1,34 @@
+package com.quinn.sjms.chain;
+
+// 此处防止报错随便引入的对象,无关该模式
+import sun.misc.Request;
+import javax.xml.ws.Response;
+import java.util.logging.Level;
+
+public abstract class Handler {
+ private Handler nextHandler;
+ //每个处理者都必须对请求做出处理 (模板模式)
+ public final Response handleMessage(Request request){
+ Response response = null;
+ //判断是否是自己的处理级别
+ if(this.getHandlerLevel().equals(request)){
+ response = this.echo(request);
+ }else{ //不属于自己的处理级别
+ //判断是否有下一个处理者
+ if(this.nextHandler != null){
+ response = this.nextHandler.handleMessage(request);
+ }else{
+ //没有适当的处理者,业务自行处理
+ }
+ }
+ return response;
+ }
+ //设置下一个处理者是谁
+ public void setNext(Handler _handler){
+ this.nextHandler = _handler;
+ }
+ //每个处理者都有一个处理级别
+ protected abstract Level getHandlerLevel();
+ //每个处理者都必须实现处理任务
+ protected abstract Response echo(Request request);
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/decorator/Component.java b/sjms/src/main/java/com/quinn/sjms/decorator/Component.java
new file mode 100644
index 0000000..91392ec
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/decorator/Component.java
@@ -0,0 +1,7 @@
+package com.quinn.sjms.decorator;
+
+public abstract class Component {
+
+ public abstract void operate();
+
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/decorator/ConcreteComponent.java b/sjms/src/main/java/com/quinn/sjms/decorator/ConcreteComponent.java
new file mode 100644
index 0000000..7854d97
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/decorator/ConcreteComponent.java
@@ -0,0 +1,8 @@
+package com.quinn.sjms.decorator;
+
+public class ConcreteComponent extends Component {
+ @Override
+ public void operate() {
+ System.out.println("do Something");
+ }
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/decorator/Decorator.java b/sjms/src/main/java/com/quinn/sjms/decorator/Decorator.java
new file mode 100644
index 0000000..e1c0f06
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/decorator/Decorator.java
@@ -0,0 +1,15 @@
+package com.quinn.sjms.decorator;
+
+public abstract class Decorator extends Component{
+ private Component component;
+
+ public Decorator(Component component) {
+ this.component = component;
+ }
+
+
+ @Override
+ public void operate() {
+ component.operate();
+ }
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/decorator/DecoratorClient.java b/sjms/src/main/java/com/quinn/sjms/decorator/DecoratorClient.java
new file mode 100644
index 0000000..7e35267
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/decorator/DecoratorClient.java
@@ -0,0 +1,11 @@
+package com.quinn.sjms.decorator;
+
+public class DecoratorClient {
+
+ public static void main(String[] args) {
+ Component component = new ConcreteComponent();
+ component = new DecoratorImpl(component);
+ component = new DecoratorImpl2(component);
+ component.operate();
+ }
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/decorator/DecoratorImpl.java b/sjms/src/main/java/com/quinn/sjms/decorator/DecoratorImpl.java
new file mode 100644
index 0000000..6a14de4
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/decorator/DecoratorImpl.java
@@ -0,0 +1,17 @@
+package com.quinn.sjms.decorator;
+
+public class DecoratorImpl extends Decorator {
+ public DecoratorImpl(Component component) {
+ super(component);
+ }
+
+ private void myMethod(){
+ System.out.println("my method");
+ }
+
+ @Override
+ public void operate() {
+ myMethod();
+ super.operate();
+ }
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/decorator/DecoratorImpl2.java b/sjms/src/main/java/com/quinn/sjms/decorator/DecoratorImpl2.java
new file mode 100644
index 0000000..8a39547
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/decorator/DecoratorImpl2.java
@@ -0,0 +1,17 @@
+package com.quinn.sjms.decorator;
+
+public class DecoratorImpl2 extends Decorator {
+ public DecoratorImpl2(Component component) {
+ super(component);
+ }
+
+ private void myMethod(){
+ System.out.println("my method2");
+ }
+
+ @Override
+ public void operate() {
+ myMethod();
+ super.operate();
+ }
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/iterator/IProject.java b/sjms/src/main/java/com/quinn/sjms/iterator/IProject.java
new file mode 100644
index 0000000..c33cb67
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/iterator/IProject.java
@@ -0,0 +1,11 @@
+package com.quinn.sjms.iterator;
+
+public interface IProject {
+
+ void add (String name);
+
+ String getProjectInfo();
+
+ ProjectIterator iterator();
+
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/iterator/IProjectImpl.java b/sjms/src/main/java/com/quinn/sjms/iterator/IProjectImpl.java
new file mode 100644
index 0000000..1c44da1
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/iterator/IProjectImpl.java
@@ -0,0 +1,35 @@
+package com.quinn.sjms.iterator;
+
+import java.util.ArrayList;
+
+public class IProjectImpl implements IProject {
+ //定义一个项目列表,说有的项目都放在这里
+ private ArrayList projectList = new ArrayList();
+ private String name;
+
+ public IProjectImpl() {
+
+ }
+
+ private IProjectImpl(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public void add(String name) {
+ this.projectList.add(new IProjectImpl(name));
+ }
+
+ @Override
+ public String getProjectInfo() {
+ String info = "";
+ //获得项目的名称
+ info = info+ "项目名称是:" + this.name;
+ return info;
+ }
+
+ @Override
+ public ProjectIterator iterator() {
+ return new ProjectIterator(projectList);
+ }
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/iterator/IProjectIterator.java b/sjms/src/main/java/com/quinn/sjms/iterator/IProjectIterator.java
new file mode 100644
index 0000000..f3c7374
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/iterator/IProjectIterator.java
@@ -0,0 +1,6 @@
+package com.quinn.sjms.iterator;
+
+import java.util.Iterator;
+
+public interface IProjectIterator extends Iterator {
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/iterator/IteratorClient.java b/sjms/src/main/java/com/quinn/sjms/iterator/IteratorClient.java
new file mode 100644
index 0000000..8dff63b
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/iterator/IteratorClient.java
@@ -0,0 +1,17 @@
+package com.quinn.sjms.iterator;
+
+public class IteratorClient {
+
+ public static void main(String[] args) {
+ IProject project = new IProjectImpl();
+ project.add("type");
+ project.add("das");
+ project.add("tde");
+ IProjectIterator projectIterator = project.iterator();
+ while(projectIterator.hasNext()){
+ IProject p = (IProject) projectIterator.next();
+ System.out.println(p.getProjectInfo());
+ }
+ }
+
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/iterator/ProjectIterator.java b/sjms/src/main/java/com/quinn/sjms/iterator/ProjectIterator.java
new file mode 100644
index 0000000..b3f7c81
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/iterator/ProjectIterator.java
@@ -0,0 +1,24 @@
+package com.quinn.sjms.iterator;
+
+import java.util.ArrayList;
+
+public class ProjectIterator implements IProjectIterator {
+
+ //所有的项目都放在ArrayList中
+ private ArrayList projectList = new ArrayList();
+ private int currentItem = 0;
+ //构造函数传入projectList
+ public ProjectIterator(ArrayList projectList){
+ this.projectList = projectList;
+ }
+
+ @Override
+ public boolean hasNext() {
+ return projectList != null && projectList.size() - 1 >= currentItem;
+ }
+
+ @Override
+ public IProject next() {
+ return this.projectList.get(this.currentItem++);
+ }
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/makeup/Component.java b/sjms/src/main/java/com/quinn/sjms/makeup/Component.java
new file mode 100644
index 0000000..7d7c78e
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/makeup/Component.java
@@ -0,0 +1,8 @@
+package com.quinn.sjms.makeup;
+
+public abstract class Component {
+ public void doSomething(){
+ // all of us
+ System.out.println("all of us");
+ }
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/makeup/Composite.java b/sjms/src/main/java/com/quinn/sjms/makeup/Composite.java
new file mode 100644
index 0000000..665561f
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/makeup/Composite.java
@@ -0,0 +1,27 @@
+package com.quinn.sjms.makeup;
+
+import java.util.ArrayList;
+
+/**
+ * 树枝构件
+ * 树枝对象,它的作用是组合树枝节点和叶子节点形成一个树形结构。
+ * 我们来看组合模式的通用源代码,首先看抽象构件,它是组合模式的精髓
+ */
+public class Composite extends Component {
+
+ //构件容器
+ private ArrayList componentArrayList = new ArrayList();
+ //增加一个叶子构件或树枝构件
+ public void add(Component component){
+ this.componentArrayList.add(component);
+ }
+ //删除一个叶子构件或树枝构件
+ public void remove(Component component){
+ this.componentArrayList.remove(component);
+ }
+ //获得分支下的所有叶子构件和树枝构件
+ public ArrayList getChildren(){
+ return this.componentArrayList;
+ }
+
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/makeup/Leaf.java b/sjms/src/main/java/com/quinn/sjms/makeup/Leaf.java
new file mode 100644
index 0000000..9302848
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/makeup/Leaf.java
@@ -0,0 +1,12 @@
+package com.quinn.sjms.makeup;
+
+/**
+ * 叶子对象,其下再也没有其他的分支,也就是遍历的最小单位
+ */
+public class Leaf extends Component {
+
+ @Override
+ public void doSomething() {
+ System.out.println("leaf");
+ }
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/makeup/MakeUpClient.java b/sjms/src/main/java/com/quinn/sjms/makeup/MakeUpClient.java
new file mode 100644
index 0000000..a2995ad
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/makeup/MakeUpClient.java
@@ -0,0 +1,31 @@
+package com.quinn.sjms.makeup;
+
+public class MakeUpClient {
+
+ public static void main(String[] args) {
+ //创建一个根节点
+ Composite root = new Composite();
+ root.doSomething();
+ //创建一个树枝构件
+ Composite branch = new Composite();
+ //创建一个叶子节点
+ Leaf leaf = new Leaf();
+ //建立整体
+ root.add(branch);
+ branch.add(leaf);
+
+ display(root);
+ }
+
+ //通过递归遍历树
+ public static void display(Composite root){
+ for(Component c:root.getChildren()){
+ if(c instanceof Leaf){ //叶子节点
+ c.doSomething();
+ }else{ //树枝节点
+ display((Composite)c);
+ }
+ }
+ }
+
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/mediator/AbstractColleague.java b/sjms/src/main/java/com/quinn/sjms/mediator/AbstractColleague.java
new file mode 100644
index 0000000..f923745
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/mediator/AbstractColleague.java
@@ -0,0 +1,8 @@
+package com.quinn.sjms.mediator;
+
+public abstract class AbstractColleague {
+ protected AbstractMediator mediator;
+ public AbstractColleague(AbstractMediator _mediator){
+ this.mediator = _mediator;
+ }
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/mediator/AbstractMediator.java b/sjms/src/main/java/com/quinn/sjms/mediator/AbstractMediator.java
new file mode 100644
index 0000000..acee57d
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/mediator/AbstractMediator.java
@@ -0,0 +1,17 @@
+package com.quinn.sjms.mediator;
+
+public abstract class AbstractMediator {
+
+ protected Purchase purchase;
+ protected Sale sale;
+ protected Stock stock;
+ //构造函数
+ public AbstractMediator(){
+ purchase = new Purchase(this);
+ sale = new Sale(this);
+ stock = new Stock(this);
+ }
+ //中介者最重要的方法叫做事件方法,处理多个对象之间的关系
+ public abstract void execute(String str,Object...objects);
+
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/mediator/Mediator.java b/sjms/src/main/java/com/quinn/sjms/mediator/Mediator.java
new file mode 100644
index 0000000..0e578a4
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/mediator/Mediator.java
@@ -0,0 +1,47 @@
+package com.quinn.sjms.mediator;
+
+public class Mediator extends AbstractMediator {
+ @Override
+ public void execute(String str, Object... objects) {
+ if(str.equals("purchase.buy")){ //采购电脑
+ this.buyComputer((Integer)objects[0]);
+ }else if(str.equals("sale.sell")){ //销售电脑
+ this.sellComputer((Integer)objects[0]);
+ }else if(str.equals("sale.offsell")){ //折价销售
+ this.offSell();
+ }else if(str.equals("stock.clear")){ //清仓处理
+ this.clearStock();
+ }
+ }
+
+ //采购电脑
+ private void buyComputer(int number){
+ int saleStatus = super.sale.getSaleStatus();
+ if(saleStatus>80){ //销售情况良好
+ System.out.println("采购IBM电脑:"+number + "台");
+ super.stock.increase(number);
+ }else{ //销售情况不好
+ int buyNumber = number/2; //折半采购
+ System.out.println("采购IBM电脑:"+buyNumber+ "台");
+ }
+ }
+ //销售电脑
+ private void sellComputer(int number){
+ if(super.stock.getStockNumber() arrayList = new ArrayList();
+ @Override
+ public Thing clone(){
+ Thing thing=null;
+ try {
+ thing = (Thing)super.clone();
+ this.arrayList = (ArrayList)this.arrayList.clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ return thing;
+ }
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/proxy/Client.java b/sjms/src/main/java/com/quinn/sjms/proxy/Client.java
index 3e7a211..b682a76 100644
--- a/sjms/src/main/java/com/quinn/sjms/proxy/Client.java
+++ b/sjms/src/main/java/com/quinn/sjms/proxy/Client.java
@@ -17,6 +17,25 @@ public class Client {
proxy.login("zhangSan", "password");
proxy.killBoss();
proxy.upgrade();
+
+
+
+
+ // 动态代理
+ //定义一个主题
+ IGamePlayer iGamePlayer = new GamePlayer("张三");
+ //定义一个Handler
+ InvocationHandler h = new GamePlayIH(iGamePlayer);
+ //定义主题的代理
+ IGamePlayer proxyInstance = DynamicProxy.newProxyInstance(iGamePlayer.getClass().
+ getClassLoader(), iGamePlayer.getClass().getInterfaces(),handler);
+ //代理的行为
+ proxyInstance.upgrade();
+
+
+
+
+
}
}
diff --git a/sjms/src/main/java/com/quinn/sjms/proxy/DynamicProxy.java b/sjms/src/main/java/com/quinn/sjms/proxy/DynamicProxy.java
new file mode 100644
index 0000000..f4904e2
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/proxy/DynamicProxy.java
@@ -0,0 +1,20 @@
+package com.quinn.sjms.proxy;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
+
+public class DynamicProxy {
+
+ public static T newProxyInstance(ClassLoader loader, Class>[] interfaces, InvocationHandler h){
+ //寻找JoinPoint连接点,AOP框架使用元数据定义
+ if(true){
+ // 此处执行位置 为 连接点 (Joint point) , 也就是 Advice 执行的位置
+ //执行一个前置通知
+ System.out.println("执行一个前置通知");
+ }
+ //执行目标,并返回结果
+ return (T)Proxy.newProxyInstance(loader,interfaces, h);
+ }
+
+
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/proxy/GamePlayIH.java b/sjms/src/main/java/com/quinn/sjms/proxy/GamePlayIH.java
index 3daea0b..5beb881 100644
--- a/sjms/src/main/java/com/quinn/sjms/proxy/GamePlayIH.java
+++ b/sjms/src/main/java/com/quinn/sjms/proxy/GamePlayIH.java
@@ -13,7 +13,10 @@ public class GamePlayIH implements InvocationHandler {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
- Object invoke = method.invoke(proxy,args);
+ // 不要在此处调用对象方法,很容易会造成死循环
+ System.out.println(method.getName());
+ System.out.println(target);
+ Object invoke = method.invoke(target,args);
return invoke;
}
}
diff --git a/sjms/src/main/java/com/quinn/sjms/tactics/Calculator.java b/sjms/src/main/java/com/quinn/sjms/tactics/Calculator.java
new file mode 100644
index 0000000..eae52bc
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/tactics/Calculator.java
@@ -0,0 +1,27 @@
+package com.quinn.sjms.tactics;
+
+public enum Calculator {
+ //加法运算
+ ADD("+"){
+ public int exec(int a,int b){
+ return a+b;
+ }
+ },
+ //减法运算
+ SUB("-"){
+ public int exec(int a,int b){
+ return a - b;
+ }
+ };
+ String value = "";
+ //定义成员值类型
+ private Calculator(String _value){
+ this.value = _value;
+ }
+ //获得枚举成员的值
+ public String getValue(){
+ return this.value;
+ }
+ //声明一个抽象函数
+ public abstract int exec(int a,int b);
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/tactics/Context.java b/sjms/src/main/java/com/quinn/sjms/tactics/Context.java
new file mode 100644
index 0000000..2a418b6
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/tactics/Context.java
@@ -0,0 +1,14 @@
+package com.quinn.sjms.tactics;
+
+public class Context {
+ private Strategy strategy = null;
+
+ public Context(Strategy strategy) {
+ this.strategy = strategy;
+ }
+ //封装后的策略方法
+ public void doAnything(){
+ this.strategy.doSomething();
+ }
+
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/tactics/Strategy.java b/sjms/src/main/java/com/quinn/sjms/tactics/Strategy.java
new file mode 100644
index 0000000..c5a5924
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/tactics/Strategy.java
@@ -0,0 +1,7 @@
+package com.quinn.sjms.tactics;
+
+public interface Strategy {
+
+ void doSomething();
+
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/tactics/StrategyImpl.java b/sjms/src/main/java/com/quinn/sjms/tactics/StrategyImpl.java
new file mode 100644
index 0000000..c5cf64d
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/tactics/StrategyImpl.java
@@ -0,0 +1,8 @@
+package com.quinn.sjms.tactics;
+
+public class StrategyImpl implements Strategy {
+ @Override
+ public void doSomething() {
+ System.out.println("Do something");
+ }
+}
diff --git a/sjms/src/main/java/com/quinn/sjms/tactics/TacticsClient.java b/sjms/src/main/java/com/quinn/sjms/tactics/TacticsClient.java
new file mode 100644
index 0000000..5659655
--- /dev/null
+++ b/sjms/src/main/java/com/quinn/sjms/tactics/TacticsClient.java
@@ -0,0 +1,13 @@
+package com.quinn.sjms.tactics;
+
+public class TacticsClient {
+ public static void main(String[] args) {
+ Strategy strategy = new StrategyImpl();
+ Context context = new Context(strategy);
+ context.doAnything();
+
+ Calculator.ADD.exec(1,2);
+ Calculator.ADD.exec(1,2);
+
+ }
+}
diff --git a/web/pom.xml b/web/pom.xml
index fe68744..a960b20 100644
--- a/web/pom.xml
+++ b/web/pom.xml
@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- forever
+ type-demo
com.love.qn
1.0.0
../pom.xml
@@ -26,7 +26,6 @@
com.love.qn
dal
- 1.0.0
@@ -49,4 +48,4 @@
-
\ No newline at end of file
+