Wzorce projektowe: strategy

Strategia jest czynnościowym wzorcem obiektowym. Wzorzec składa się z wielu związanych ze sobą algorytmów ukrytych wewnątrz klasy sterującej zwanej Context.

Bardzo łatwo dodaje się nowe algorytmy, poprzez utworzenie nowej klasy implementującej dany interfejs. Conext może w danej chwili mieć wybraną tylko jedną strategię.

package pl.roboczenotatki.designpatterns.strategy;

public interface Vehicle {
	public void makeSound();
}

package pl.roboczenotatki.designpatterns.strategy;

public class Car implements Vehicle{

	@Override
	public void makeSound() {
		System.out.println("Brum from car");
	}
}

package pl.roboczenotatki.designpatterns.strategy;

public class Bus implements Vehicle{

	@Override
	public void makeSound() {
		System.out.println("Brum from bus");
	}
}

package pl.roboczenotatki.designpatterns.strategy;

import java.util.Calendar;

public class App {
	public static void main(String[] args) {
		System.out.println("Design pattern: Strategy");

		Vehicle vehicle = null;
		switch (Calendar.DAY_OF_WEEK) {
		case Calendar.SATURDAY:
		case Calendar.SUNDAY:
			vehicle = new Car();
			break;
		default:
			vehicle = new Bus();
			break;
		}

		vehicle.makeSound();

	}
}

Diagram:
strategy

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s