From 0080493383bbf17f4ee851e6648a8e7e6c66af48 Mon Sep 17 00:00:00 2001 From: user Date: Sat, 8 Aug 2026 19:56:34 +0400 Subject: [PATCH] feat(hw-03): implement Strategy pattern --- .../app/src/main/java/org/example/App.java | 19 +++++++++++++++++++ .../example/strategy/ConcreteStrategyA.java | 10 ++++++++++ .../example/strategy/ConcreteStrategyB.java | 10 ++++++++++ .../java/org/example/strategy/Context.java | 19 +++++++++++++++++++ .../java/org/example/strategy/Strategy.java | 6 ++++++ 5 files changed, 64 insertions(+) diff --git a/hw-03/project-root/app/src/main/java/org/example/App.java b/hw-03/project-root/app/src/main/java/org/example/App.java index adfe954..18b15d7 100644 --- a/hw-03/project-root/app/src/main/java/org/example/App.java +++ b/hw-03/project-root/app/src/main/java/org/example/App.java @@ -8,6 +8,7 @@ import org.example.builder.*; import org.example.chain.*; import org.example.decorator.*; import org.example.proxy.*; +import org.example.strategy.*; public class App { public static void main(String[] args) { @@ -16,10 +17,16 @@ public class App { private static void run() { checkAdapterPattern(); + checkBuilderPattern(); + checkChainPattern(); + checkDecoratorPattern(); + checkProxyPattern(); + + checkStrategyPattern(); } private static void checkAdapterPattern() { @@ -57,4 +64,16 @@ public class App { proxy.execute(); } + + private static void checkStrategyPattern() { + Context context = new Context(new ConcreteStrategyA()); + + boolean crayfishWhistled = true; // Если рак на горе свистнул + + if (crayfishWhistled) { + context.setStrategy(new ConcreteStrategyB()); + } + + context.executeStrategy(); + } } diff --git a/hw-03/project-root/app/src/main/java/org/example/strategy/ConcreteStrategyA.java b/hw-03/project-root/app/src/main/java/org/example/strategy/ConcreteStrategyA.java index e69de29..4f21a77 100644 --- a/hw-03/project-root/app/src/main/java/org/example/strategy/ConcreteStrategyA.java +++ b/hw-03/project-root/app/src/main/java/org/example/strategy/ConcreteStrategyA.java @@ -0,0 +1,10 @@ +package org.example.strategy; + +/** Concrete Strategy A */ +public class ConcreteStrategyA implements Strategy { + + @Override + public void execute() { + System.out.println("ConcreteStrategyA выполняет операцию"); + } +} diff --git a/hw-03/project-root/app/src/main/java/org/example/strategy/ConcreteStrategyB.java b/hw-03/project-root/app/src/main/java/org/example/strategy/ConcreteStrategyB.java index e69de29..8bc2b6f 100644 --- a/hw-03/project-root/app/src/main/java/org/example/strategy/ConcreteStrategyB.java +++ b/hw-03/project-root/app/src/main/java/org/example/strategy/ConcreteStrategyB.java @@ -0,0 +1,10 @@ +package org.example.strategy; + +/** Concrete Strategy B */ +public class ConcreteStrategyB implements Strategy { + + @Override + public void execute() { + System.out.println("ConcreteStrategyB выполняет операцию"); + } +} diff --git a/hw-03/project-root/app/src/main/java/org/example/strategy/Context.java b/hw-03/project-root/app/src/main/java/org/example/strategy/Context.java index e69de29..7aa241f 100644 --- a/hw-03/project-root/app/src/main/java/org/example/strategy/Context.java +++ b/hw-03/project-root/app/src/main/java/org/example/strategy/Context.java @@ -0,0 +1,19 @@ +package org.example.strategy; + +/** Context */ +public class Context { + + public Context(Strategy strategy) { + this.strategy = strategy; + } + + public void setStrategy(Strategy strategy) { + this.strategy = strategy; + } + + public void executeStrategy() { + strategy.execute(); + } + + private Strategy strategy; +} diff --git a/hw-03/project-root/app/src/main/java/org/example/strategy/Strategy.java b/hw-03/project-root/app/src/main/java/org/example/strategy/Strategy.java index e69de29..e72bf9e 100644 --- a/hw-03/project-root/app/src/main/java/org/example/strategy/Strategy.java +++ b/hw-03/project-root/app/src/main/java/org/example/strategy/Strategy.java @@ -0,0 +1,6 @@ +package org.example.strategy; + +/** Strategy */ +public interface Strategy { + void execute(); +}