Wzorce projektowe: Template method

Wzorzec projektowy Template method jest wzorcem operacyjnym. Definiuje on za pomocą abstrakcji szkielet algorytmu, który w klasach potomnych jest w pełni realizowany. Na początku tworzona jest klasa zawierająca ogólne kroki algorytmu zapisane jako metody abstrakcyjne. Klasy potomne nadpisują te abstrakcyjne metody implementując rzeczywiste akcje.

Dzięki takiemu podejściu szkielet algorytmu trzymany jest w jednym miejscu, a jego mniejsze kroki mogą być zmieniane w podklasach.

Template Method jest wykorzystywany we wzorcach Strategia i Abstract Factory.

package pl.roboczenotatki.designpatterns.templateMethod;

public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Design pattern: Template method" );
        
        AbstractAlgorithm algorithm = new PrintAlgorithm();        
        algorithm.run();
    }
}

AbstractAlgorithm

package pl.roboczenotatki.designpatterns.templateMethod;

public abstract class AbstractAlgorithm {

	public void run(){
		before();
		doRun();
		after();
	}
	
	private void before(){
		System.out.println("Before");
	}
	
	private void after() {
		System.out.println("After");
	}
	
	protected abstract void doRun();
}

PrintAlgorithm

package pl.roboczenotatki.designpatterns.templateMethod;

public class PrintAlgorithm extends AbstractAlgorithm{

	@Override
	protected void doRun() {
		System.out.println("PrintAlgorithm is running");
	}

}

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