Categories
Algorithms & Design Design Pattern

Strategy Pattern

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

Leave a comment

Design a site like this with WordPress.com
Get started