Created
July 2, 2019 11:17
-
-
Save zarinfam/3c36b5fac88e29cdde72169a2d832abe to your computer and use it in GitHub Desktop.
Created with Copy to Gist
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| interface Strategy { | |
| int execute(int a, int b); | |
| }; | |
| /** Implements the algorithm using the strategy interface */ | |
| class Add implements Strategy { | |
| public int execute(int a, int b) { | |
| System.out.println("Called Add's execute()"); | |
| return a + b; // Do an addition with a and b | |
| } | |
| }; | |
| class Subtract implements Strategy { | |
| public int execute(int a, int b) { | |
| System.out.println("Called Subtract's execute()"); | |
| return a - b; // Do a subtraction with a and b | |
| } | |
| }; | |
| class Multiply implements Strategy { | |
| public int execute(int a, int b) { | |
| System.out.println("Called Multiply's execute()"); | |
| return a * b; // Do a multiplication with a and b | |
| } | |
| }; | |
| // Configured with a ConcreteStrategy object and maintains | |
| // a reference to a Strategy object | |
| class Context { | |
| private Strategy strategy; | |
| public Context(Strategy strategy) { | |
| this.strategy = strategy; | |
| } | |
| public int executeStrategy(int a, int b) { | |
| return this.strategy.execute(a, b); | |
| } | |
| }; | |
| /** Tests the pattern */ | |
| class StrategyExample { | |
| public static void main(String[] args) { | |
| Context context; | |
| // Three contexts following different strategies | |
| context = new Context(new Add()); | |
| int resultA = context.executeStrategy(3,4); | |
| context = new Context(new Subtract()); | |
| int resultB = context.executeStrategy(3,4); | |
| context = new Context(new Multiply()); | |
| int resultC = context.executeStrategy(3,4); | |
| System.out.println("Result A : " + resultA ); | |
| System.out.println("Result B : " + resultB ); | |
| System.out.println("Result C : " + resultC ); | |
| } | |
| }; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment