From 10c8feed0f47cc4549fabe603a1e5f1cc916d65c Mon Sep 17 00:00:00 2001 From: limqhz Date: Fri, 24 Feb 2023 17:45:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/pom.xml | 1 + .../java/com/qn/test/event/MainEventTest.java | 2 +- pom.xml | 8 +++++ sjms/pom.xml | 35 +++++++++++++++++++ .../main/java/com/quinn/sjms/LiskovDemo.java | 27 ++++++++++++++ .../sjms/abstractpro/AbstractCreator.java | 9 +++++ .../sjms/abstractpro/AbstractProductA.java | 10 ++++++ .../sjms/abstractpro/AbstractProductB.java | 10 ++++++ .../com/quinn/sjms/abstractpro/Client.java | 17 +++++++++ .../com/quinn/sjms/abstractpro/Creator1.java | 13 +++++++ .../com/quinn/sjms/abstractpro/Creator2.java | 13 +++++++ .../com/quinn/sjms/abstractpro/ProductA1.java | 10 ++++++ .../com/quinn/sjms/abstractpro/ProductA2.java | 10 ++++++ .../com/quinn/sjms/abstractpro/ProductB1.java | 10 ++++++ .../com/quinn/sjms/abstractpro/ProductB2.java | 10 ++++++ .../java/com/quinn/sjms/model/Father.java | 11 ++++++ .../com/quinn/sjms/model/InvokeFather.java | 8 +++++ .../java/com/quinn/sjms/model/InvokeSon.java | 10 ++++++ .../main/java/com/quinn/sjms/model/Son.java | 10 ++++++ .../quinn/sjms/modelfunction/HanmaCar.java | 13 +++++++ .../quinn/sjms/modelfunction/HanmaH1Car.java | 9 +++++ .../java/com/quinn/sjms/other/CanClone.java | 27 ++++++++++++++ .../com/quinn/sjms/other/CanHuToolClone.java | 28 +++++++++++++++ .../quinn/sjms/product/ConcreteCreator.java | 28 +++++++++++++++ .../java/com/quinn/sjms/product/Creator.java | 14 ++++++++ .../quinn/sjms/product/CustomProduct1.java | 14 ++++++++ .../quinn/sjms/product/CustomProduct2.java | 8 +++++ .../java/com/quinn/sjms/product/Product.java | 13 +++++++ .../java/com/quinn/sjms/proxy/Client.java | 22 ++++++++++++ .../java/com/quinn/sjms/proxy/GamePlayIH.java | 19 ++++++++++ .../java/com/quinn/sjms/proxy/GamePlayer.java | 35 +++++++++++++++++++ .../com/quinn/sjms/proxy/GamePlayerProxy.java | 25 +++++++++++++ .../com/quinn/sjms/proxy/IGamePlayer.java | 10 ++++++ .../com/quinn/sjms/singleton/Singleton.java | 17 +++++++++ .../com/qn/controller/WXTokenController.java | 1 + 35 files changed, 506 insertions(+), 1 deletion(-) create mode 100644 sjms/pom.xml create mode 100644 sjms/src/main/java/com/quinn/sjms/LiskovDemo.java create mode 100644 sjms/src/main/java/com/quinn/sjms/abstractpro/AbstractCreator.java create mode 100644 sjms/src/main/java/com/quinn/sjms/abstractpro/AbstractProductA.java create mode 100644 sjms/src/main/java/com/quinn/sjms/abstractpro/AbstractProductB.java create mode 100644 sjms/src/main/java/com/quinn/sjms/abstractpro/Client.java create mode 100644 sjms/src/main/java/com/quinn/sjms/abstractpro/Creator1.java create mode 100644 sjms/src/main/java/com/quinn/sjms/abstractpro/Creator2.java create mode 100644 sjms/src/main/java/com/quinn/sjms/abstractpro/ProductA1.java create mode 100644 sjms/src/main/java/com/quinn/sjms/abstractpro/ProductA2.java create mode 100644 sjms/src/main/java/com/quinn/sjms/abstractpro/ProductB1.java create mode 100644 sjms/src/main/java/com/quinn/sjms/abstractpro/ProductB2.java create mode 100644 sjms/src/main/java/com/quinn/sjms/model/Father.java create mode 100644 sjms/src/main/java/com/quinn/sjms/model/InvokeFather.java create mode 100644 sjms/src/main/java/com/quinn/sjms/model/InvokeSon.java create mode 100644 sjms/src/main/java/com/quinn/sjms/model/Son.java create mode 100644 sjms/src/main/java/com/quinn/sjms/modelfunction/HanmaCar.java create mode 100644 sjms/src/main/java/com/quinn/sjms/modelfunction/HanmaH1Car.java create mode 100644 sjms/src/main/java/com/quinn/sjms/other/CanClone.java create mode 100644 sjms/src/main/java/com/quinn/sjms/other/CanHuToolClone.java create mode 100644 sjms/src/main/java/com/quinn/sjms/product/ConcreteCreator.java create mode 100644 sjms/src/main/java/com/quinn/sjms/product/Creator.java create mode 100644 sjms/src/main/java/com/quinn/sjms/product/CustomProduct1.java create mode 100644 sjms/src/main/java/com/quinn/sjms/product/CustomProduct2.java create mode 100644 sjms/src/main/java/com/quinn/sjms/product/Product.java create mode 100644 sjms/src/main/java/com/quinn/sjms/proxy/Client.java create mode 100644 sjms/src/main/java/com/quinn/sjms/proxy/GamePlayIH.java create mode 100644 sjms/src/main/java/com/quinn/sjms/proxy/GamePlayer.java create mode 100644 sjms/src/main/java/com/quinn/sjms/proxy/GamePlayerProxy.java create mode 100644 sjms/src/main/java/com/quinn/sjms/proxy/IGamePlayer.java create mode 100644 sjms/src/main/java/com/quinn/sjms/singleton/Singleton.java diff --git a/common/pom.xml b/common/pom.xml index face3c3..6c6e82b 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -23,6 +23,7 @@ 1.2 + org.codehaus.jackson jackson-xc 1.9.12 diff --git a/common/src/main/java/com/qn/test/event/MainEventTest.java b/common/src/main/java/com/qn/test/event/MainEventTest.java index c606ed6..5695f66 100644 --- a/common/src/main/java/com/qn/test/event/MainEventTest.java +++ b/common/src/main/java/com/qn/test/event/MainEventTest.java @@ -14,7 +14,7 @@ public class MainEventTest { timer.schedule(new TimerTask() { @Override public void run() { - + System.out.println("做点事情"); } },1000); } diff --git a/pom.xml b/pom.xml index c1583f9..c90a45a 100644 --- a/pom.xml +++ b/pom.xml @@ -40,6 +40,13 @@ quartz 2.3.0 + + + org.projectlombok + lombok + 1.18.20 + + @@ -85,6 +92,7 @@ common dal bootstrap + sjms diff --git a/sjms/pom.xml b/sjms/pom.xml new file mode 100644 index 0000000..b42a492 --- /dev/null +++ b/sjms/pom.xml @@ -0,0 +1,35 @@ + + + + forever + com.love.qn + 1.0.0 + + 4.0.0 + + sjms + + + + com.love.qn + common + + + + org.projectlombok + lombok + + + + cn.hutool + hutool-all + 5.8.12 + + + + + + + diff --git a/sjms/src/main/java/com/quinn/sjms/LiskovDemo.java b/sjms/src/main/java/com/quinn/sjms/LiskovDemo.java new file mode 100644 index 0000000..d2c6f79 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/LiskovDemo.java @@ -0,0 +1,27 @@ +package com.quinn.sjms; + +import com.quinn.sjms.model.Father; +import com.quinn.sjms.model.Son; + +import java.util.HashMap; +import java.util.Map; + +public class LiskovDemo { + + public static void main(String[] args) { + HashMap hMap = new HashMap(); + Map map = new HashMap(); + Father f = new Father(); + f.say(hMap); + + Son s = new Son(); + s.say(hMap); + + Son s1 = new Son(); + s1.say(map); + +// Father f1 = new Father(); +// f1.say(map); + } + +} diff --git a/sjms/src/main/java/com/quinn/sjms/abstractpro/AbstractCreator.java b/sjms/src/main/java/com/quinn/sjms/abstractpro/AbstractCreator.java new file mode 100644 index 0000000..2672674 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/abstractpro/AbstractCreator.java @@ -0,0 +1,9 @@ +package com.quinn.sjms.abstractpro; + +public abstract class AbstractCreator { + //创建A产品家族 + public abstract AbstractProductA createProductA(); + //创建B产品家族 + public abstract AbstractProductB createProductB(); +} + diff --git a/sjms/src/main/java/com/quinn/sjms/abstractpro/AbstractProductA.java b/sjms/src/main/java/com/quinn/sjms/abstractpro/AbstractProductA.java new file mode 100644 index 0000000..e829e88 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/abstractpro/AbstractProductA.java @@ -0,0 +1,10 @@ +package com.quinn.sjms.abstractpro; + +public abstract class AbstractProductA { + //每个产品共有的方法 + public void shareMethod(){ + } + //每个产品相同方法,不同实现 + public abstract void doSomething(); +} + diff --git a/sjms/src/main/java/com/quinn/sjms/abstractpro/AbstractProductB.java b/sjms/src/main/java/com/quinn/sjms/abstractpro/AbstractProductB.java new file mode 100644 index 0000000..cd2790a --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/abstractpro/AbstractProductB.java @@ -0,0 +1,10 @@ +package com.quinn.sjms.abstractpro; + +public abstract class AbstractProductB { + //每个产品共有的方法 + public void shareMethod(){ + } + //每个产品相同方法,不同实现 + public abstract void doSomething(); +} + diff --git a/sjms/src/main/java/com/quinn/sjms/abstractpro/Client.java b/sjms/src/main/java/com/quinn/sjms/abstractpro/Client.java new file mode 100644 index 0000000..0387825 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/abstractpro/Client.java @@ -0,0 +1,17 @@ +package com.quinn.sjms.abstractpro; + +public class Client { + public static void main(String[] args) { + //定义出两个工厂 + AbstractCreator creator1 = new Creator1(); + AbstractCreator creator2 = new Creator2(); + //产生A1对象 + AbstractProductA a1 = creator1.createProductA(); + //产生A2对象 + AbstractProductA a2 = creator2.createProductA(); + //产生B1对象 + AbstractProductB b1 = creator1.createProductB(); + //产生B2对象 + AbstractProductB b2 = creator2.createProductB(); + } +} diff --git a/sjms/src/main/java/com/quinn/sjms/abstractpro/Creator1.java b/sjms/src/main/java/com/quinn/sjms/abstractpro/Creator1.java new file mode 100644 index 0000000..77f781a --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/abstractpro/Creator1.java @@ -0,0 +1,13 @@ +package com.quinn.sjms.abstractpro; + +public class Creator1 extends AbstractCreator{ + //只生产产品等级为1的A产品 + public AbstractProductA createProductA() { + return new ProductA1(); + } + //只生产产品等级为1的B产品 + public AbstractProductB createProductB() { + return new ProductB1(); + } + +} diff --git a/sjms/src/main/java/com/quinn/sjms/abstractpro/Creator2.java b/sjms/src/main/java/com/quinn/sjms/abstractpro/Creator2.java new file mode 100644 index 0000000..d83b02a --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/abstractpro/Creator2.java @@ -0,0 +1,13 @@ +package com.quinn.sjms.abstractpro; + +public class Creator2 extends AbstractCreator{ + //只生产产品等级为2的A产品 + public AbstractProductA createProductA() { + return new ProductA2(); + } + //只生产产品等级为2的B产品 + public AbstractProductB createProductB() { + return new ProductB2(); + } + +} diff --git a/sjms/src/main/java/com/quinn/sjms/abstractpro/ProductA1.java b/sjms/src/main/java/com/quinn/sjms/abstractpro/ProductA1.java new file mode 100644 index 0000000..b85e3c1 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/abstractpro/ProductA1.java @@ -0,0 +1,10 @@ +package com.quinn.sjms.abstractpro; + +public class ProductA1 extends AbstractProductA{ + + @Override + public void doSomething() { + System.out.println("产品A1的实现方法"); + } +} + diff --git a/sjms/src/main/java/com/quinn/sjms/abstractpro/ProductA2.java b/sjms/src/main/java/com/quinn/sjms/abstractpro/ProductA2.java new file mode 100644 index 0000000..fa7a774 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/abstractpro/ProductA2.java @@ -0,0 +1,10 @@ +package com.quinn.sjms.abstractpro; + +public class ProductA2 extends AbstractProductA{ + + @Override + public void doSomething() { + System.out.println("产品A2的实现方法"); + } +} + diff --git a/sjms/src/main/java/com/quinn/sjms/abstractpro/ProductB1.java b/sjms/src/main/java/com/quinn/sjms/abstractpro/ProductB1.java new file mode 100644 index 0000000..6d37d08 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/abstractpro/ProductB1.java @@ -0,0 +1,10 @@ +package com.quinn.sjms.abstractpro; + +public class ProductB1 extends AbstractProductB{ + + @Override + public void doSomething() { + System.out.println("产品B1的实现方法"); + } +} + diff --git a/sjms/src/main/java/com/quinn/sjms/abstractpro/ProductB2.java b/sjms/src/main/java/com/quinn/sjms/abstractpro/ProductB2.java new file mode 100644 index 0000000..a3c4a07 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/abstractpro/ProductB2.java @@ -0,0 +1,10 @@ +package com.quinn.sjms.abstractpro; + +public class ProductB2 extends AbstractProductB{ + + @Override + public void doSomething() { + System.out.println("产品B2的实现方法"); + } +} + diff --git a/sjms/src/main/java/com/quinn/sjms/model/Father.java b/sjms/src/main/java/com/quinn/sjms/model/Father.java new file mode 100644 index 0000000..f7dca26 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/model/Father.java @@ -0,0 +1,11 @@ +package com.quinn.sjms.model; + +import java.util.HashMap; + +public class Father { + + public void say(HashMap hashMap) { + System.out.println("Father say"); + } + +} diff --git a/sjms/src/main/java/com/quinn/sjms/model/InvokeFather.java b/sjms/src/main/java/com/quinn/sjms/model/InvokeFather.java new file mode 100644 index 0000000..dd79428 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/model/InvokeFather.java @@ -0,0 +1,8 @@ +package com.quinn.sjms.model; + +public class InvokeFather { + + public Father invoke (){ + return new Father(); + } +} diff --git a/sjms/src/main/java/com/quinn/sjms/model/InvokeSon.java b/sjms/src/main/java/com/quinn/sjms/model/InvokeSon.java new file mode 100644 index 0000000..dda1b13 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/model/InvokeSon.java @@ -0,0 +1,10 @@ +package com.quinn.sjms.model; + +public class InvokeSon extends InvokeFather{ + + @Override + public Son invoke() { + return new Son(); + } + +} diff --git a/sjms/src/main/java/com/quinn/sjms/model/Son.java b/sjms/src/main/java/com/quinn/sjms/model/Son.java new file mode 100644 index 0000000..5cf309f --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/model/Son.java @@ -0,0 +1,10 @@ +package com.quinn.sjms.model; + +import java.util.Map; + +public class Son extends Father { + + public void say(Map hashMap) { + System.out.println("Son say"); + } +} diff --git a/sjms/src/main/java/com/quinn/sjms/modelfunction/HanmaCar.java b/sjms/src/main/java/com/quinn/sjms/modelfunction/HanmaCar.java new file mode 100644 index 0000000..28da762 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/modelfunction/HanmaCar.java @@ -0,0 +1,13 @@ +package com.quinn.sjms.modelfunction; + +public abstract class HanmaCar { + public void run(){ + System.out.println("开始跑了"); + } + + public abstract void job(); + + public final void didi(){ + System.out.println("按喇叭"); + } +} diff --git a/sjms/src/main/java/com/quinn/sjms/modelfunction/HanmaH1Car.java b/sjms/src/main/java/com/quinn/sjms/modelfunction/HanmaH1Car.java new file mode 100644 index 0000000..f4e5c7c --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/modelfunction/HanmaH1Car.java @@ -0,0 +1,9 @@ +package com.quinn.sjms.modelfunction; + +public class HanmaH1Car extends HanmaCar{ + @Override + public void job() { + + } + +} diff --git a/sjms/src/main/java/com/quinn/sjms/other/CanClone.java b/sjms/src/main/java/com/quinn/sjms/other/CanClone.java new file mode 100644 index 0000000..c0bc80a --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/other/CanClone.java @@ -0,0 +1,27 @@ +package com.quinn.sjms.other; + +import lombok.Data; + +@Data +public class CanClone implements Cloneable{ + + private String name; + + private String line; + + @Override + protected CanClone clone() throws CloneNotSupportedException { + return (CanClone) super.clone(); + } + + public static void main(String[] args) throws CloneNotSupportedException { + CanClone canClone = new CanClone(); + canClone.setName("dad"); + canClone.setLine("test"); + CanClone clone = canClone.clone(); + canClone.setLine("new"); + System.out.println(canClone); + System.out.println(clone); + } + +} diff --git a/sjms/src/main/java/com/quinn/sjms/other/CanHuToolClone.java b/sjms/src/main/java/com/quinn/sjms/other/CanHuToolClone.java new file mode 100644 index 0000000..73c106f --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/other/CanHuToolClone.java @@ -0,0 +1,28 @@ +package com.quinn.sjms.other; + +import cn.hutool.core.clone.CloneSupport; +import lombok.Data; + +@Data +public class CanHuToolClone extends CloneSupport { + + private String name; + + private String line; + + @Override + public CanHuToolClone clone() { + return (CanHuToolClone) super.clone(); + } + + public static void main(String[] args) { + CanHuToolClone canClone = new CanHuToolClone(); + canClone.setName("dad"); + canClone.setLine("test"); + CanHuToolClone clone = canClone.clone(); + canClone.setLine("new"); + System.out.println(canClone); + System.out.println(clone); + } + +} diff --git a/sjms/src/main/java/com/quinn/sjms/product/ConcreteCreator.java b/sjms/src/main/java/com/quinn/sjms/product/ConcreteCreator.java new file mode 100644 index 0000000..77e3c6c --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/product/ConcreteCreator.java @@ -0,0 +1,28 @@ +package com.quinn.sjms.product; + +public class ConcreteCreator extends Creator { + @Override + public T createProduct(Class c) { + Product product=null; + try { + Class aClass = Class.forName(c.getName()); + product = (Product) aClass.newInstance(); + } catch (Exception e) { + //异常处理 + } + return (T)product; + } + + public static void main(String[] args) { + ConcreteCreator creator = new ConcreteCreator(); + CustomProduct1 product = creator.createProduct(CustomProduct1.class); + product.method2(); + product.method1(); + + CustomProduct2 product2 = creator.createProduct(CustomProduct2.class); + product2.method2(); + product2.method1(); + + } + +} diff --git a/sjms/src/main/java/com/quinn/sjms/product/Creator.java b/sjms/src/main/java/com/quinn/sjms/product/Creator.java new file mode 100644 index 0000000..dbe7c9b --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/product/Creator.java @@ -0,0 +1,14 @@ +package com.quinn.sjms.product; + +/** + * 抽象工厂 + */ +public abstract class Creator { + + /* + * 创建一个产品对象,其输入参数类型可以自行设置 + * 通常为String、Enum、Class等,当然也可以为空 + */ + public abstract T createProduct(Class c); + +} diff --git a/sjms/src/main/java/com/quinn/sjms/product/CustomProduct1.java b/sjms/src/main/java/com/quinn/sjms/product/CustomProduct1.java new file mode 100644 index 0000000..66d265d --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/product/CustomProduct1.java @@ -0,0 +1,14 @@ +package com.quinn.sjms.product; + +public class CustomProduct1 extends Product{ + + @Override + public void method1() { + System.out.println("CustomProduct1.method1"); + } + + @Override + public void method2() { + System.out.println("CustomProduct1.method2()"); + } +} diff --git a/sjms/src/main/java/com/quinn/sjms/product/CustomProduct2.java b/sjms/src/main/java/com/quinn/sjms/product/CustomProduct2.java new file mode 100644 index 0000000..95b26a7 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/product/CustomProduct2.java @@ -0,0 +1,8 @@ +package com.quinn.sjms.product; + +public class CustomProduct2 extends Product{ + @Override + public void method2() { + System.out.println("CustomProduct2.method2()"); + } +} diff --git a/sjms/src/main/java/com/quinn/sjms/product/Product.java b/sjms/src/main/java/com/quinn/sjms/product/Product.java new file mode 100644 index 0000000..35b4640 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/product/Product.java @@ -0,0 +1,13 @@ +package com.quinn.sjms.product; + +public abstract class Product { + + //产品类的公共方法 + public void method1(){ + System.out.println("Product.method1"); + //业务逻辑处理 + } + //抽象方法 + public abstract void method2(); + +} diff --git a/sjms/src/main/java/com/quinn/sjms/proxy/Client.java b/sjms/src/main/java/com/quinn/sjms/proxy/Client.java new file mode 100644 index 0000000..3e7a211 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/proxy/Client.java @@ -0,0 +1,22 @@ +package com.quinn.sjms.proxy; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Proxy; + +public class Client { + + public static void main(String[] args) throws Exception { + GamePlayer player = new GamePlayer("张三"); + InvocationHandler handler = new GamePlayIH(player); + //获得类的class loader + ClassLoader cl = player.getClass().getClassLoader(); + //动态产生一个代理者 + IGamePlayer proxy = (IGamePlayer) Proxy.newProxyInstance(cl, + new Class[]{IGamePlayer.class},handler); + //登录 + proxy.login("zhangSan", "password"); + proxy.killBoss(); + proxy.upgrade(); + } + +} diff --git a/sjms/src/main/java/com/quinn/sjms/proxy/GamePlayIH.java b/sjms/src/main/java/com/quinn/sjms/proxy/GamePlayIH.java new file mode 100644 index 0000000..3daea0b --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/proxy/GamePlayIH.java @@ -0,0 +1,19 @@ +package com.quinn.sjms.proxy; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; + +public class GamePlayIH implements InvocationHandler { + + Object target; + + public GamePlayIH(Object _obj){ + this.target = _obj; + } + + @Override + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + Object invoke = method.invoke(proxy,args); + return invoke; + } +} diff --git a/sjms/src/main/java/com/quinn/sjms/proxy/GamePlayer.java b/sjms/src/main/java/com/quinn/sjms/proxy/GamePlayer.java new file mode 100644 index 0000000..ce83731 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/proxy/GamePlayer.java @@ -0,0 +1,35 @@ +package com.quinn.sjms.proxy; + +import lombok.Data; + +@Data +public class GamePlayer implements IGamePlayer { + private String name = ""; + + //构造函数限制谁能创建对象,并同时传递姓名 + public GamePlayer(String _name) throws Exception{ + this.name = _name; + } + + //构造函数限制谁能创建对象,并同时传递姓名 + public GamePlayer(IGamePlayer _gamePlayer,String _name) throws Exception{ + if(_gamePlayer == null ){ + throw new Exception("不能创建真实角色!"); + }else{ + this.name = _name; + } + } + //打怪,最期望的就是杀老怪 + public void killBoss() { + System.out.println(this.name + "在打怪!"); + } + //进游戏之前你肯定要登录吧,这是一个必要条件 + public void login(String user, String password) { + System.out.println("登录名为"+user + "的用户" + this.name + "登录成功!"); + } + //升级,升级有很多方法,花钱买是一种,做任务也是一种 + public void upgrade() { + System.out.println(this.name + " 又升了一级!"); + } +} + diff --git a/sjms/src/main/java/com/quinn/sjms/proxy/GamePlayerProxy.java b/sjms/src/main/java/com/quinn/sjms/proxy/GamePlayerProxy.java new file mode 100644 index 0000000..4731a8f --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/proxy/GamePlayerProxy.java @@ -0,0 +1,25 @@ +package com.quinn.sjms.proxy; + +public class GamePlayerProxy{ + private IGamePlayer gamePlayer = null; + //通过构造函数传递要对谁进行代练 +// public GamePlayerProxy(String name){ +// try { +// gamePlayer = new GamePlayer(this,name); +// } catch (Exception e) { +// } +// } + //代练杀怪 + public void killBoss() { + this.gamePlayer.killBoss(); + } + //代练登录 + public void login(String user, String password) { + this.gamePlayer.login(user, password); + } + //代练升级 + public void upgrade() { + this.gamePlayer.upgrade(); + } + +} diff --git a/sjms/src/main/java/com/quinn/sjms/proxy/IGamePlayer.java b/sjms/src/main/java/com/quinn/sjms/proxy/IGamePlayer.java new file mode 100644 index 0000000..4d30707 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/proxy/IGamePlayer.java @@ -0,0 +1,10 @@ +package com.quinn.sjms.proxy; + +public interface IGamePlayer { + //登录游戏 + public void login(String user,String password); + //杀怪,网络游戏的主要特色 + public void killBoss(); + //升级 + public void upgrade(); +} diff --git a/sjms/src/main/java/com/quinn/sjms/singleton/Singleton.java b/sjms/src/main/java/com/quinn/sjms/singleton/Singleton.java new file mode 100644 index 0000000..04afad2 --- /dev/null +++ b/sjms/src/main/java/com/quinn/sjms/singleton/Singleton.java @@ -0,0 +1,17 @@ +package com.quinn.sjms.singleton; + +public class Singleton { + + private static Singleton singleton = null; + //限制产生多个对象 + private Singleton(){ + } + //通过该方法获得实例对象 + public static Singleton getSingleton(){ + if(singleton == null){ // 懒汉式 // 饿汉式 全局静态变量已经New 了对象,无需判空 + singleton = new Singleton(); + } + return singleton; + } + +} diff --git a/web/src/main/java/com/qn/controller/WXTokenController.java b/web/src/main/java/com/qn/controller/WXTokenController.java index b19866f..ae2856f 100644 --- a/web/src/main/java/com/qn/controller/WXTokenController.java +++ b/web/src/main/java/com/qn/controller/WXTokenController.java @@ -17,6 +17,7 @@ import java.util.Map; @Controller public class WXTokenController { + //9a677cd0b9b2dc4d387dd974db140a11 private Logger logger = LoggerFactory.getLogger("WXTokenController"); /**