From 9e116a4e9075d45d5f3d4f3bf5ef1ac430d663f0 Mon Sep 17 00:00:00 2001 From: xiaoshengjie Date: Wed, 2 Nov 2022 13:54:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A3=E4=BB=BB=E9=93=BE+sate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 1 + .../15585a41adf5dd34de1852b9f7a2c742bebfd282 | 11 ++++ .../1652b301de6e1dadaab20f1f8c9dcf053f3cd3a7 | 4 +- .../469cb43b51ba7e207f3767d69d0e3deded4e3c93 | 4 ++ .../4a5d2311ad0ce6ee7cbe87839280d9b76f3a4b04 | 13 ++--- .../4d2d0bdb96fe770c302998b099d5c5c4d3076bc3 | 3 ++ .../69e5f1fcaeb728725015172c220b41d4f2f3235c | 11 ++-- .../70f82ce88ac6b54afd6eed03fe6951084561b5c5 | 42 ++------------- .../739d9cb13e6b2724f1a0fbbf0a0a279d33a10ff3 | 4 +- .../888ef4a6877adc43a62f7041567ffc1e48a68df4 | 3 ++ .../8a8f68332c66aa57898f0442651ad801e856c9d1 | 4 ++ .../9961bb741aa5f0de26d1bf93b62041d0a1349f9c | 10 ---- .../9e5a3f4cb2d4a5a75750157065729f2eb8cc0a07 | 9 ---- .../a0ea789eb1c9abbf2e2488c4025abd4ca0248ce0 | 12 +++++ .../a7a9714ccccb1e9cd6c18c07b50adb6fb63efde1 | 9 +++- .../e3fca3d11a4f0d149adf1107cfbcef6e43898bff | 5 ++ .../ebd48d685c9a0a6dded8bb1c6d2c75c717c9c10d | 8 ++- .../f05c3638610e0ce274846e174c61431121775426 | 8 +-- .../fa22466dc106d781e88480a5609428c6ed1e96c2 | 2 + .idea/sonarlint/issuestore/index.pb | 54 ++++++------------- .idea/vcs.xml | 6 +++ src/main/java/com/study/tank/Bullet.java | 1 - src/main/java/com/study/tank/GameModel.java | 51 +++++++++++++++++- src/main/java/com/study/tank/GameObject.java | 3 +- src/main/java/com/study/tank/Tank.java | 2 - src/main/java/com/study/tank/TankFrame.java | 6 +++ .../java/com/study/tank/command/Command.java | 10 ++++ .../com/study/tank/command/CommandChain.java | 38 +++++++++++++ .../com/study/tank/command/CommandMain.java | 13 +++++ .../java/com/study/tank/command/Content.java | 15 ++++++ .../com/study/tank/command/CopyCommand.java | 26 +++++++++ .../com/study/tank/command/DeleteCommand.java | 29 ++++++++++ .../com/study/tank/command/InsertCommand.java | 28 ++++++++++ .../java/com/study/tank/cor/Collider.java | 4 +- src/main/java/com/study/tank/sate/Car.java | 49 +++++++++++++++++ .../java/com/study/tank/sate/CarMain.java | 17 ++++++ .../java/com/study/tank/sate/CarSate.java | 12 +++++ .../com/study/tank/sate/CarSatesDict.java | 9 ++++ .../com/study/tank/sate/ClosedCarSate.java | 28 ++++++++++ .../java/com/study/tank/sate/OpenSateCar.java | 28 ++++++++++ .../java/com/study/tank/sate/RunCarSate.java | 28 ++++++++++ .../java/com/study/tank/sate/StopCarSate.java | 28 ++++++++++ 42 files changed, 513 insertions(+), 135 deletions(-) create mode 100644 .idea/sonarlint/issuestore/1/5/15585a41adf5dd34de1852b9f7a2c742bebfd282 create mode 100644 .idea/sonarlint/issuestore/4/d/4d2d0bdb96fe770c302998b099d5c5c4d3076bc3 create mode 100644 .idea/sonarlint/issuestore/8/8/888ef4a6877adc43a62f7041567ffc1e48a68df4 delete mode 100644 .idea/sonarlint/issuestore/9/9/9961bb741aa5f0de26d1bf93b62041d0a1349f9c delete mode 100644 .idea/sonarlint/issuestore/9/e/9e5a3f4cb2d4a5a75750157065729f2eb8cc0a07 create mode 100644 .idea/sonarlint/issuestore/a/0/a0ea789eb1c9abbf2e2488c4025abd4ca0248ce0 create mode 100644 .idea/sonarlint/issuestore/e/3/e3fca3d11a4f0d149adf1107cfbcef6e43898bff create mode 100644 .idea/vcs.xml create mode 100644 src/main/java/com/study/tank/command/Command.java create mode 100644 src/main/java/com/study/tank/command/CommandChain.java create mode 100644 src/main/java/com/study/tank/command/CommandMain.java create mode 100644 src/main/java/com/study/tank/command/Content.java create mode 100644 src/main/java/com/study/tank/command/CopyCommand.java create mode 100644 src/main/java/com/study/tank/command/DeleteCommand.java create mode 100644 src/main/java/com/study/tank/command/InsertCommand.java create mode 100644 src/main/java/com/study/tank/sate/Car.java create mode 100644 src/main/java/com/study/tank/sate/CarMain.java create mode 100644 src/main/java/com/study/tank/sate/CarSate.java create mode 100644 src/main/java/com/study/tank/sate/CarSatesDict.java create mode 100644 src/main/java/com/study/tank/sate/ClosedCarSate.java create mode 100644 src/main/java/com/study/tank/sate/OpenSateCar.java create mode 100644 src/main/java/com/study/tank/sate/RunCarSate.java create mode 100644 src/main/java/com/study/tank/sate/StopCarSate.java diff --git a/.idea/.gitignore b/.idea/.gitignore index 73f69e0..4fa6955 100644 --- a/.idea/.gitignore +++ b/.idea/.gitignore @@ -6,3 +6,4 @@ /dataSources.local.xml # Editor-based HTTP Client requests /httpRequests/ +/.idea diff --git a/.idea/sonarlint/issuestore/1/5/15585a41adf5dd34de1852b9f7a2c742bebfd282 b/.idea/sonarlint/issuestore/1/5/15585a41adf5dd34de1852b9f7a2c742bebfd282 new file mode 100644 index 0000000..0215930 --- /dev/null +++ b/.idea/sonarlint/issuestore/1/5/15585a41adf5dd34de1852b9f7a2c742bebfd282 @@ -0,0 +1,11 @@ + +w +java:S2234"ZParameters to collider have the same names but not the same order as the method arguments.(80 +P +java:S2209"5Change this instance-reference to a static reference.(ݥ +P +java:S2209"5Change this instance-reference to a static reference.(ݥ +P +java:S2209""5Change this instance-reference to a static reference.(Ӧ +P +java:S2209""5Change this instance-reference to a static reference.(Ӧ \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/1/6/1652b301de6e1dadaab20f1f8c9dcf053f3cd3a7 b/.idea/sonarlint/issuestore/1/6/1652b301de6e1dadaab20f1f8c9dcf053f3cd3a7 index a312ae2..fe0db94 100644 --- a/.idea/sonarlint/issuestore/1/6/1652b301de6e1dadaab20f1f8c9dcf053f3cd3a7 +++ b/.idea/sonarlint/issuestore/1/6/1652b301de6e1dadaab20f1f8c9dcf053f3cd3a7 @@ -1,2 +1,4 @@ -t java:S120"ZRename this package name to match the regular expression '^[a-z_]+(\.[a-z_][a-z0-9_]*)*$'.( \ No newline at end of file +X java:S125" -java:S1604"(Make this anonymous inner class a lambda(î \ No newline at end of file +] java:S125" java:S1084")Either remove or fill this block of code.( -W -java:S1161B":Add the "@Override" annotation above this method signature(80 -Q java:S1259" -java:S1604"(Make this anonymous inner class a lambda(î \ No newline at end of file +java:S1604"(Make this anonymous inner class a lambda(î \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/e/3/e3fca3d11a4f0d149adf1107cfbcef6e43898bff b/.idea/sonarlint/issuestore/e/3/e3fca3d11a4f0d149adf1107cfbcef6e43898bff new file mode 100644 index 0000000..f1e54d5 --- /dev/null +++ b/.idea/sonarlint/issuestore/e/3/e3fca3d11a4f0d149adf1107cfbcef6e43898bff @@ -0,0 +1,5 @@ + +| +java:S2234"ZParameters to collider have the same names but not the same order as the method arguments.(80 +O +java:S3516 "9Refactor this method to not always return the same value.( \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/e/b/ebd48d685c9a0a6dded8bb1c6d2c75c717c9c10d b/.idea/sonarlint/issuestore/e/b/ebd48d685c9a0a6dded8bb1c6d2c75c717c9c10d index ee1fec6..513d140 100644 --- a/.idea/sonarlint/issuestore/e/b/ebd48d685c9a0a6dded8bb1c6d2c75c717c9c10d +++ b/.idea/sonarlint/issuestore/e/b/ebd48d685c9a0a6dded8bb1c6d2c75c717c9c10d @@ -1,6 +1,4 @@ -K -java:S2209"5Change this instance-reference to a static reference.( -P -java:S2209"5Change this instance-reference to a static reference.( -t java:S120"ZRename this package name to match the regular expression '^[a-z_]+(\.[a-z_][a-z0-9_]*)*$'.( \ No newline at end of file +X java:S125" -study-tank.iml,6\9\69fcf7cf0cb84aa5f9c25dd41d8b89bcf868840a -] --src/main/java/com/study/tank/PropertyMgr.java,f\a\fa22466dc106d781e88480a5609428c6ed1e96c2 -] --src/main/java/com/study/tank/ImageManger.java,e\3\e33fa438c138d070344c0d8500f75aa75f823e55 -7 -pom.xml,4\4\442292b8a7efeabbe4cc176709b833b1792140ec +h +8src/main/java/com/study/tank/cor/BulletWallCollider.java,4\d\4d2d0bdb96fe770c302998b099d5c5c4d3076bc3 Y )src/main/java/com/study/tank/Explode.java,a\7\a7a9714ccccb1e9cd6c18c07b50adb6fb63efde1 -e -5src/main/java/com/study/tank/factory/RectExplode.java,6\9\69e5f1fcaeb728725015172c220b41d4f2f3235c -e -5src/main/java/com/study/tank/factory/GameFactory.java,4\0\40f02948eb790c7986e5ecd2216cd56c8d1316c0 -g -7src/main/java/com/study/tank/strategy/FireStrategy.java,e\2\e2f699d7ece4648d65d8f55bbb53b4c1a97a0134 -e -5src/main/java/com/study/tank/factory/BaseExplode.java,7\3\739d9cb13e6b2724f1a0fbbf0a0a279d33a10ff3 -d -4src/main/java/com/study/tank/factory/BaseBullet.java,2\9\2995ce511c59d5daf350eb58870c6c2ad9774f9c -e -5src/main/java/com/study/tank/factory/RoundBullet.java,4\a\4a5d2311ad0ce6ee7cbe87839280d9b76f3a4b04 -X -(src/main/java/com/study/tank/Bullet.java,9\e\9e5a3f4cb2d4a5a75750157065729f2eb8cc0a07 -b -2src/main/java/com/study/tank/factory/BaseTank.java,9\d\9d993a8181111dcdfd4f4d45ff6e01eca290e383 -a -1src/main/java/com/study/tank/factory/WarTank.java,7\0\70f82ce88ac6b54afd6eed03fe6951084561b5c5 -e -5src/main/java/com/study/tank/factory/RectFactory.java,4\6\469cb43b51ba7e207f3767d69d0e3deded4e3c93 -Z -*src/main/java/com/study/tank/TestMain.java,f\0\f05c3638610e0ce274846e174c61431121775426 -h -8src/main/java/com/study/tank/factory/DefaultFactory.java,8\a\8a8f68332c66aa57898f0442651ad801e856c9d1 -s -Csrc/main/java/com/study/tank/strategy/Imp/GoodTankFireStrategy.java,1\6\1652b301de6e1dadaab20f1f8c9dcf053f3cd3a7 +k +;src/main/java/com/study/tank/cor/BulletAndTankCollider.java,1\5\15585a41adf5dd34de1852b9f7a2c742bebfd282 +f +6src/main/java/com/study/tank/cor/WallTankCollider.java,e\3\e3fca3d11a4f0d149adf1107cfbcef6e43898bff r Bsrc/main/java/com/study/tank/strategy/Imp/DefaultFireStrategy.java,e\b\ebd48d685c9a0a6dded8bb1c6d2c75c717c9c10d -W -'src/main/java/com/study/tank/Audio.java,5\b\5bd8e55a95e8e3ef2459b7d56ee9a74443b8f788 -[ -+src/test/java/com/study/tank/ImageTest.java,9\7\97cf6348e49d166ce567c6eb53c9d085ee3b786c \ No newline at end of file +s +Csrc/main/java/com/study/tank/strategy/Imp/GoodTankFireStrategy.java,1\6\1652b301de6e1dadaab20f1f8c9dcf053f3cd3a7 +Z +*src/main/java/com/study/tank/TestMain.java,f\0\f05c3638610e0ce274846e174c61431121775426 +] +-src/main/java/com/study/tank/PropertyMgr.java,f\a\fa22466dc106d781e88480a5609428c6ed1e96c2 +f +6src/main/java/com/study/tank/cor/TankTankCollider.java,a\0\a0ea789eb1c9abbf2e2488c4025abd4ca0248ce0 +c +3src/main/java/com/study/tank/cor/ColliderChain.java,8\8\888ef4a6877adc43a62f7041567ffc1e48a68df4 \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/com/study/tank/Bullet.java b/src/main/java/com/study/tank/Bullet.java index 87126d1..6eed518 100644 --- a/src/main/java/com/study/tank/Bullet.java +++ b/src/main/java/com/study/tank/Bullet.java @@ -69,7 +69,6 @@ public class Bullet extends GameObject { * 移动 */ public void move() { - System.out.println("bullet move"); switch (dir) { case LEFT: x -= speed; diff --git a/src/main/java/com/study/tank/GameModel.java b/src/main/java/com/study/tank/GameModel.java index 0b86212..5e535fe 100644 --- a/src/main/java/com/study/tank/GameModel.java +++ b/src/main/java/com/study/tank/GameModel.java @@ -7,6 +7,7 @@ import com.study.tank.cor.TankTankCollider; import com.study.tank.factory.BaseTank; import java.awt.*; +import java.io.*; import java.util.ArrayList; import java.util.List; @@ -14,7 +15,7 @@ import java.util.List; * @author xsj * @date 2022/10/27 14:30 */ -public class GameModel { +public class GameModel implements Serializable { public static GameModel INSTANCE = new GameModel(); static { @@ -63,4 +64,52 @@ public class GameModel { } } + /** + * 存档 + */ + public void save() { + File f = new File("E:/jie/tank.data"); + ObjectOutputStream oos = null; + try { + if (!f.exists()){ + f.getParentFile().mkdir();//创建文件上级目录 + f.createNewFile();//创建文件 + } + oos = new ObjectOutputStream(new FileOutputStream(f)); + oos.writeObject(GameModel.INSTANCE); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (oos != null) { + try { + oos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + /** + * 加载存档节点 + */ + public void load() { + File f = new File("E:/jie/tank.data"); + ObjectInputStream ois = null; + try { + ois = new ObjectInputStream(new FileInputStream(f)); + INSTANCE = (GameModel) ois.readObject(); + } catch (IOException | ClassNotFoundException e) { + e.printStackTrace(); + } finally { + if (ois != null) { + try { + ois.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + } diff --git a/src/main/java/com/study/tank/GameObject.java b/src/main/java/com/study/tank/GameObject.java index 589a404..a94f7d1 100644 --- a/src/main/java/com/study/tank/GameObject.java +++ b/src/main/java/com/study/tank/GameObject.java @@ -1,12 +1,13 @@ package com.study.tank; import java.awt.*; +import java.io.Serializable; /** * @author xsj * @date 2022/10/27 14:20 */ -public abstract class GameObject { +public abstract class GameObject implements Serializable { public int x, y; public abstract void paint(Graphics g); diff --git a/src/main/java/com/study/tank/Tank.java b/src/main/java/com/study/tank/Tank.java index ea0b2df..1b33dc6 100644 --- a/src/main/java/com/study/tank/Tank.java +++ b/src/main/java/com/study/tank/Tank.java @@ -77,9 +77,7 @@ public class Tank extends GameObject { @Override public void paint(Graphics g) { - System.out.println("tank paint:" + this.toString()); if (!living) { - System.out.println("tank remove:" + this.toString()); GameModel.INSTANCE.remove(this); return; } diff --git a/src/main/java/com/study/tank/TankFrame.java b/src/main/java/com/study/tank/TankFrame.java index 71ccb93..f5b06a8 100644 --- a/src/main/java/com/study/tank/TankFrame.java +++ b/src/main/java/com/study/tank/TankFrame.java @@ -107,6 +107,12 @@ public class TankFrame extends Frame { case KeyEvent.VK_SPACE: GameModel.INSTANCE.myTank.fire(); break; + case KeyEvent.VK_U: + GameModel.INSTANCE.save(); + break; + case KeyEvent.VK_P: + GameModel.INSTANCE.load(); + break; } setDirMethod(); } diff --git a/src/main/java/com/study/tank/command/Command.java b/src/main/java/com/study/tank/command/Command.java new file mode 100644 index 0000000..bf7d8d7 --- /dev/null +++ b/src/main/java/com/study/tank/command/Command.java @@ -0,0 +1,10 @@ +package com.study.tank.command; + +/** + * @author xsj + * @date 2022/11/1 10:08 + */ +public abstract class Command { + abstract void doIt(); + abstract void unDo(); +} diff --git a/src/main/java/com/study/tank/command/CommandChain.java b/src/main/java/com/study/tank/command/CommandChain.java new file mode 100644 index 0000000..4a7e0a3 --- /dev/null +++ b/src/main/java/com/study/tank/command/CommandChain.java @@ -0,0 +1,38 @@ +package com.study.tank.command; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author xsj + * @date 2022/11/1 10:30 + */ +public class CommandChain extends Command { + int index = 0; + List commandList = new ArrayList<>(); + + public CommandChain() { + Content c = new Content(); + this.add(new InsertCommand(c)); + this.add(new CopyCommand(c)); + this.add(new DeleteCommand(c)); + } + + public void add(Command command) { + this.commandList.add(command); + } + + @Override + void doIt() { + for (int i = 0; i < commandList.size(); i++) { + commandList.get(i).doIt(); + } + } + + @Override + void unDo() { + for (int i = commandList.size(); i > 0; i--) { + commandList.get(i - 1).unDo(); + } + } +} diff --git a/src/main/java/com/study/tank/command/CommandMain.java b/src/main/java/com/study/tank/command/CommandMain.java new file mode 100644 index 0000000..fc043b5 --- /dev/null +++ b/src/main/java/com/study/tank/command/CommandMain.java @@ -0,0 +1,13 @@ +package com.study.tank.command; + +/** + * @author xsj + * @date 2022/11/1 10:29 + */ +public class CommandMain { + public static void main(String[] args) { + CommandChain chain = new CommandChain(); + chain.doIt(); + chain.unDo(); + } +} diff --git a/src/main/java/com/study/tank/command/Content.java b/src/main/java/com/study/tank/command/Content.java new file mode 100644 index 0000000..f274bc5 --- /dev/null +++ b/src/main/java/com/study/tank/command/Content.java @@ -0,0 +1,15 @@ +package com.study.tank.command; + +import org.springframework.beans.BeanUtils; + +/** + * @author xsj + * @date 2022/11/1 10:17 + */ +public class Content { + public String msg = "请操作数据-----"; + + public Content() { + System.out.println("原始数据:" + msg); + } +} diff --git a/src/main/java/com/study/tank/command/CopyCommand.java b/src/main/java/com/study/tank/command/CopyCommand.java new file mode 100644 index 0000000..ccfd9d5 --- /dev/null +++ b/src/main/java/com/study/tank/command/CopyCommand.java @@ -0,0 +1,26 @@ +package com.study.tank.command; + +/** + * @author xsj + * @date 2022/11/1 10:09 + */ +public class CopyCommand extends Command { + + Content c; + private final int index = 1; + public CopyCommand(Content c) { + this.c = c; + } + + @Override + void doIt() { + c.msg = c.msg + c.msg; + System.out.println("copy新数据操作后:" + c.msg); + } + + @Override + void unDo() { + c.msg = c.msg.substring(0, c.msg.length() / 2); + System.out.println("取消copy新数据操作后:" + c.msg); + } +} diff --git a/src/main/java/com/study/tank/command/DeleteCommand.java b/src/main/java/com/study/tank/command/DeleteCommand.java new file mode 100644 index 0000000..7973dcf --- /dev/null +++ b/src/main/java/com/study/tank/command/DeleteCommand.java @@ -0,0 +1,29 @@ +package com.study.tank.command; + +/** + * @author xsj + * @date 2022/11/1 10:09 + */ +public class DeleteCommand extends Command { + + Content c; + String delete = ""; + private final int index = 2; + + public DeleteCommand(Content c) { + this.c = c; + } + + @Override + void doIt() { + delete = c.msg; + c.msg = ""; + System.out.println("删除新数据操作后:" + c.msg); + } + + @Override + void unDo() { + c.msg = delete; + System.out.println("取消删除新数据操作后:" + c.msg); + } +} diff --git a/src/main/java/com/study/tank/command/InsertCommand.java b/src/main/java/com/study/tank/command/InsertCommand.java new file mode 100644 index 0000000..9fc8376 --- /dev/null +++ b/src/main/java/com/study/tank/command/InsertCommand.java @@ -0,0 +1,28 @@ +package com.study.tank.command; + +/** + * @author xsj + * @date 2022/11/1 10:09 + */ +public class InsertCommand extends Command { + + Content c; + String sortString = "baidu.com"; + private final int index = 0; + + public InsertCommand(Content c) { + this.c = c; + } + + @Override + void doIt() { + c.msg += sortString; + System.out.println("插入新数据操作后:" + c.msg); + } + + @Override + void unDo() { + c.msg = c.msg.substring(0, c.msg.length() - sortString.length()); + System.out.println("取消插入新数据操作后:"+c.msg); + } +} diff --git a/src/main/java/com/study/tank/cor/Collider.java b/src/main/java/com/study/tank/cor/Collider.java index 73a0af3..91eec5c 100644 --- a/src/main/java/com/study/tank/cor/Collider.java +++ b/src/main/java/com/study/tank/cor/Collider.java @@ -3,10 +3,12 @@ package com.study.tank.cor; import com.study.tank.GameModel; import com.study.tank.GameObject; +import java.io.Serializable; + /** * @author xsj * @date 2022/10/27 15:39 */ -public interface Collider { +public interface Collider extends Serializable { boolean collider(GameObject o1, GameObject o2); } diff --git a/src/main/java/com/study/tank/sate/Car.java b/src/main/java/com/study/tank/sate/Car.java new file mode 100644 index 0000000..47723bc --- /dev/null +++ b/src/main/java/com/study/tank/sate/Car.java @@ -0,0 +1,49 @@ +package com.study.tank.sate; + +/** + * @author xsj + * @date 2022/11/1 15:42 + */ +public class Car { + private String name; + private CarSatesDict sate; + private CarSate carSate; + + public Car(String name,CarSatesDict sate) { + this.name = name; + this.sate = sate; + switch (sate){ + case OPEN: + this.carSate = new OpenSateCar(); + break; + case CLOSED: + this.carSate = new ClosedCarSate(); + break; + case RUNNING: + this.carSate = new RunCarSate(); + break; + case STOP: + this.carSate = new StopCarSate(); + break; + } + } + + + void open() { + carSate.open(); + } + + void closed() { + carSate.closed(); + } + + void running() { + carSate.running(); + } + + void stop() { + carSate.stop(); + } + + +} diff --git a/src/main/java/com/study/tank/sate/CarMain.java b/src/main/java/com/study/tank/sate/CarMain.java new file mode 100644 index 0000000..17a6aea --- /dev/null +++ b/src/main/java/com/study/tank/sate/CarMain.java @@ -0,0 +1,17 @@ +package com.study.tank.sate; + +/** + * @author xsj + * @date 2022/11/1 15:53 + */ +public class CarMain { + + public static void main(String[] args) { + Car car = new Car("荣威", CarSatesDict.CLOSED); + car.open(); + car.closed(); + car.running(); + car.stop(); + } + +} diff --git a/src/main/java/com/study/tank/sate/CarSate.java b/src/main/java/com/study/tank/sate/CarSate.java new file mode 100644 index 0000000..c992e3f --- /dev/null +++ b/src/main/java/com/study/tank/sate/CarSate.java @@ -0,0 +1,12 @@ +package com.study.tank.sate; + +/** + * @author xsj + * @date 2022/11/1 15:44 + */ +public abstract class CarSate { + abstract void open(); + abstract void closed(); + abstract void running(); + abstract void stop(); +} diff --git a/src/main/java/com/study/tank/sate/CarSatesDict.java b/src/main/java/com/study/tank/sate/CarSatesDict.java new file mode 100644 index 0000000..1ffbfdb --- /dev/null +++ b/src/main/java/com/study/tank/sate/CarSatesDict.java @@ -0,0 +1,9 @@ +package com.study.tank.sate; + +/** + * @author xsj + * @date 2022/11/1 15:59 + */ +public enum CarSatesDict { + OPEN,CLOSED,RUNNING,STOP +} diff --git a/src/main/java/com/study/tank/sate/ClosedCarSate.java b/src/main/java/com/study/tank/sate/ClosedCarSate.java new file mode 100644 index 0000000..c6319cb --- /dev/null +++ b/src/main/java/com/study/tank/sate/ClosedCarSate.java @@ -0,0 +1,28 @@ +package com.study.tank.sate; + +/** + * @author xsj + * @date 2022/11/1 15:49 + */ +public class ClosedCarSate extends CarSate{ + + @Override + void open() { + System.out.println("关门状态,可以开门-------"); + } + + @Override + void closed() { + System.out.println("关门状态无法closed-------"); + } + + @Override + void running() { + System.out.println("关门状态,可以running-------"); + } + + @Override + void stop() { + System.out.println("关门状态,可以stop-------"); + } +} diff --git a/src/main/java/com/study/tank/sate/OpenSateCar.java b/src/main/java/com/study/tank/sate/OpenSateCar.java new file mode 100644 index 0000000..416df82 --- /dev/null +++ b/src/main/java/com/study/tank/sate/OpenSateCar.java @@ -0,0 +1,28 @@ +package com.study.tank.sate; + +/** + * @author xsj + * @date 2022/11/1 15:47 + */ +public class OpenSateCar extends CarSate{ + + @Override + void open() { + System.out.println("开门状态无法开门-------"); + } + + @Override + void closed() { + System.out.println("(当前开门)可以调用closed-------"); + } + + @Override + void running() { + System.out.println("开门状态无法调用running-------"); + } + + @Override + void stop() { + System.out.println("开门状态无法调用stop-------"); + } +} diff --git a/src/main/java/com/study/tank/sate/RunCarSate.java b/src/main/java/com/study/tank/sate/RunCarSate.java new file mode 100644 index 0000000..4363876 --- /dev/null +++ b/src/main/java/com/study/tank/sate/RunCarSate.java @@ -0,0 +1,28 @@ +package com.study.tank.sate; + +/** + * @author xsj + * @date 2022/11/1 16:04 + */ +public class RunCarSate extends CarSate { + + @Override + void open() { + System.out.println("run状态不能open-----------"); + } + + @Override + void closed() { + System.out.println("run状态不能closed-----------"); + } + + @Override + void running() { + System.out.println("run状态不需要继续running-----------"); + } + + @Override + void stop() { + System.out.println("run状态,可以stop-----------"); + } +} diff --git a/src/main/java/com/study/tank/sate/StopCarSate.java b/src/main/java/com/study/tank/sate/StopCarSate.java new file mode 100644 index 0000000..2be779e --- /dev/null +++ b/src/main/java/com/study/tank/sate/StopCarSate.java @@ -0,0 +1,28 @@ +package com.study.tank.sate; + +/** + * @author xsj + * @date 2022/11/1 16:06 + */ +public class StopCarSate extends CarSate { + + @Override + void open() { + System.out.println("stop状态,可以open-------"); + } + + @Override + void closed() { + System.out.println("stop状态不可以closed-------"); + } + + @Override + void running() { + System.out.println("stop状态,可以running-------"); + } + + @Override + void stop() { + System.out.println("stop状态不需要stop-------"); + } +}