Context.java
public class Context {
private Strategy strategy;
public Strategy getStrategy() {
return strategy;
}
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
public int execute(int a, int b){
return strategy.execute(a, b);
}
}
Strategy.java
public abstract class Strategy {
public abstract int execute(int a, int b);
}
AdditionStrategy.java
public class AdditionStrategy extends Strategy {
@Override
public int execute(int a, int b) {
// TODO Auto-generated method stub
return a+b;
}
}
SubstractionStrategy.java
public class SubstractionStrategy extends Strategy {
@Override
public int execute(int a, int b) {
// TODO Auto-generated method stub
return a-b;
}
}
MultiplyStrategy.java
public class MultiplyStrategy extends Strategy {
@Override
public int execute(int a, int b) {
// TODO Auto-generated method stub
return a*b;
}
}
DivisionStrategy.java
public class DivisionStrategy extends Strategy {
@Override
public int execute(int a, int b) {
// TODO Auto-generated method stub
return a/b;
}
}
PowerStrategy.java
public class PowersStrategy extends Strategy {
@Override
public int execute(int a, int b) {
// TODO Auto-generated method stub
return (int)Math.pow(a, b);
}
}
StrategyPatternDemo.java
import java.util.Scanner;
public class StrategyPatternDemo {
public static void main(String[] args) {
Strategy addition = new AdditionStrategy();
Strategy substraction = new SubstractionStrategy();
Strategy multiply = new MultiplyStrategy();
Strategy division = new DivisionStrategy();
Strategy powers = new PowersStrategy();
Context context = new Context();
Scanner sc = new Scanner(System.in);
System.out.println("Enter number for a ::");
int a = sc.nextInt();
System.out.println("Enter number for b :: ");
int b = sc.nextInt();
context.setStrategy(addition);
System.out.println("by addition Strategy ::::"+context.execute(a, b));
context.setStrategy(substraction);
System.out.println("by substraction Strategy ::::"+context.execute(a, b));
context.setStrategy(multiply);
System.out.println("by multiply Strategy ::::"+context.execute(a, b));
context.setStrategy(division);
System.out.println("by division Strategy ::::"+context.execute(a, b));
context.setStrategy(powers);
System.out.println("by powers Strategy ::::"+context.execute(a, b));
}
}
Output
