Statyczna vs polimorficzna metoda wytwórcza

0

Witam

Mama zrealizować w javie model komisu w oparciu o wzorzec metody wytwórczej w dwóch wersjach: statycznej i poliformicznej.
Problem w tym że nie wiem jakie są różnice w zastosowaniu. Napiszcie mi o konkretnie o tym, najlepiej w z jakimś przykładem w pseudokodzie. Projekt mam na środę.

0

Mam podobny problem mógłby ktoś pomóc?

0

"Projekt mam na środę" - mistrzostwo :)

Generalnie wygląda to tak, że:

Macie powiedzmy jedną abstrakcyjną i trzy nieabstrakcyjne klasy:

abstract class Product {
	// ...
}

class ProductA extends Product {

i tak samo dla ProductB i ProductC

Polimorficzna implementacja wygląda tak, że:

abstract class Creator {
	public abstract Product create();
}

class CreatorA extends Creator {
	public Product create(){
		ProductA product = new ProductA();
		// ...
		return product;
	}
}

I tak samo dla CreatorB i CreatorC

W przypadku statycznej implementacji podejrzewam, że to wyglądać powinno mniej więcej tak:

class StaticCreator {
	public static Product createA(){

		ProductA product = new ProductA();
		// ...
		return product;
	}

	public static Product createB(){
	//...

}

Albo tak:

class StaticCreator {
	private static int productType = ...;
	
	public static Product create(){
		Product product = null;
		if(productType==0){
			product = new ProductA();
			// ...
		} else if(productType==1){
			product = new ProductB();
			// ...
		}

		return product;
	}

	public static void setProductType(int type){
		productType = type;
	}
}

Chociaż szczerze mówiąc wydaje mi się że statyczna metoda wytwórcza łamie ideę metody wytwórczej.

BTW: można zamienić klasy abstrakcyjne na interfejsy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1