Space Invaders clone built using Java and multiple Software Design Patterns. Examples of Software Design Patterns are usually shown in isolation from each other so this project aims to show how they would interact in the context of a bigger application.
| Pattern | Functionality | Status |
|---|---|---|
| Null Object | 👤 Player | ✅ |
| Memento | 👤 Player | ✅ |
| Proxy | 👤 Player | ✅ |
| Prototype | 🔫 Bullets | ✅ |
| Factory Method | 👾 Enemies | ✅ |
| Facade | ⚙️ Model | ✅ |
| Singleton | 🚀 Player Ship | ✅ |
| Flyweight | 🧚♀️ Sprites | ✅ |
| Command | ⌨️ Keyboard Input | ✅ |
| Observer | 🎮 Adaptive Difficulty | ⛔️ |
| Strategy | 🎮 Adaptive Difficulty | ⛔️ |
| Interpreter | 👾 Enemy Movement | ⛔️ |
| Visitor | 👾 Enemy Movement | ⛔️ |
| State | ⏸ Pause | ⛔️ |
To perform the code style check run:
mvn checkstyle:check
To run the tests and compile the project run:
mvn package
To run the game after the compilation is finished run:
java -cp target/space-invaders-1.0-SNAPSHOT.jar edu.patterns.gui.Game
To generate the documentation run:
mvn javadoc:javadoc
