Wzorce projektowe: Simple Factory

Simple factory jest jednym z wzorców konstrukcyjnych, których zadaniem jest tworzenie obiektów. Wzorzec ten charakteryzuje się tym, że caly proces decyzyjny i konstrukcyjny jest w jednej metodzie.

package pl.roboczenotatki.designpatterns.simpleFactory;

public enum Animal {
	RABBIT, WOLF, BOAR;
}

package pl.roboczenotatki.designpatterns.simpleFactory;

public interface WildAnimal {
	public void showName();
}

package pl.roboczenotatki.designpatterns.simpleFactory;

public class Rabbit implements WildAnimal {

	@Override
	public void showName() {
		System.out.println("I'm rabbit");
	}
}

package pl.roboczenotatki.designpatterns.simpleFactory;

public class Wolf implements WildAnimal {
	@Override
	public void showName() {
		System.out.println("I'm wolf");
	}
}

package pl.roboczenotatki.designpatterns.simpleFactory;

public class Boar implements WildAnimal{

	@Override
	public void showName() {
		System.out.println("I'm boar");
	}
}

package pl.roboczenotatki.designpatterns.simpleFactory;

/** Zastosowano tutaj rowniez wzorzec Singleton */
public class AnimalFactory {
	private static AnimalFactory INSTANCE;

	private AnimalFactory(){}

	public static AnimalFactory getInstance(){
		if(INSTANCE == null){
			INSTANCE = new AnimalFactory();
		}
		return INSTANCE;
	}

	public WildAnimal createWildAnimal(Animal animal){
		switch (animal) {
		case RABBIT:
			return new Rabbit();
		case WOLF:
			return new Wolf();
		default:
			return new Boar();
		}
	}
}

package pl.roboczenotatki.designpatterns.simpleFactory;

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

    	WildAnimal wildAnimal = AnimalFactory.getInstance().createWildAnimal(Animal.RABBIT);
    	wildAnimal.showName();
    }
}

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ń )

Facebook photo

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

Google+ photo

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

Connecting to %s