summaryrefslogtreecommitdiff
path: root/diagrams/assignment_3/mmd/strategy_pattern.mmd
diff options
context:
space:
mode:
Diffstat (limited to 'diagrams/assignment_3/mmd/strategy_pattern.mmd')
-rw-r--r--diagrams/assignment_3/mmd/strategy_pattern.mmd56
1 files changed, 56 insertions, 0 deletions
diff --git a/diagrams/assignment_3/mmd/strategy_pattern.mmd b/diagrams/assignment_3/mmd/strategy_pattern.mmd
new file mode 100644
index 0000000..7b6dfc8
--- /dev/null
+++ b/diagrams/assignment_3/mmd/strategy_pattern.mmd
@@ -0,0 +1,56 @@
+classDiagram
+ class Entity {
+ <<abstract>>
+ +IMovementStrategy MovementStrategy
+ +IFeedingStrategy FeedingStrategy
+ +Move()
+ +Feed()
+ }
+
+ class Morg {
+ }
+
+ class IMovementStrategy {
+ <<interface>>
+ +Move(entity: Entity, newLocation: (int, int))
+ }
+
+ class IFeedingStrategy {
+ <<interface>>
+ +Feed(predator: Entity, prey: Entity)
+ }
+
+ class MovementStrategyPaddles {
+ +Move(...)
+ }
+
+ class MovementStrategyOozes {
+ +Move(...)
+ }
+
+ class FeedingStrategyAbsorbs {
+ +Feed(...)
+ }
+
+ class FeedingStrategyEnvelops {
+ +Feed(...)
+ }
+
+ class MorgFactory {
+ +CreateMovementStrategy(...) IMovementStrategy
+ +CreateFeedingStrategy(...) IFeedingStrategy
+ }
+
+ Entity <|-- Morg
+ Entity --> IMovementStrategy : uses
+ Entity --> IFeedingStrategy : uses
+ IMovementStrategy <|.. MovementStrategyPaddles
+ IMovementStrategy <|.. MovementStrategyOozes
+ IFeedingStrategy <|.. FeedingStrategyAbsorbs
+ IFeedingStrategy <|.. FeedingStrategyEnvelops
+ MorgFactory ..> IMovementStrategy : creates
+ MorgFactory ..> IFeedingStrategy : creates
+
+ note for Entity "Any combination of movement
+and feeding behaviors
+configured via Factory"