algorytm.org

Implementacja w Java



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Metoda wytwórcza (factory method) - Implementacja w Java
Ocena użytkownikóww: *****  / 7
SłabyŚwietny
Nadesłany przez Łukasz Guz, 11 marca 2014 14:45
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

Main.java:
/****************************************
* Wzorzec Projektowy Factody Method
* (metoda fabrykujaca)
* www.algorytm.org
*****************************************/

enum ChocolateType {
	MILK, DARK, WITH_NUTS
}

interface ChocolateFactory {
	Chocolate produceChocolate(ChocolateType type);
}

class WedelFactory implements ChocolateFactory {

	@Override
	public Chocolate produceChocolate(ChocolateType type) {

		Chocolate chocolate = null;

		switch (type) {
		case MILK: {
			chocolate = new MilkChocolate();
			break;
		}
		case DARK: {
			chocolate = new DarkChocolate();
			break;
		}
		case WITH_NUTS: {
			chocolate = new NutsChocolate();
			break;
		}
		}
		return chocolate;
	}
}

abstract class Chocolate {

	protected ChocolateType type;

	public abstract Chocolate getChocolate();
}

class MilkChocolate extends Chocolate {

	public MilkChocolate() {
		type = ChocolateType.MILK;
	}

	protected void addMilk() {
		System.out.println("Add milks...");
	}

	@Override
	public Chocolate getChocolate() {
		addMilk();
		return this;
	}
}

class DarkChocolate extends Chocolate {

	public DarkChocolate() {
		type = ChocolateType.DARK;
	}

	protected void addCocoa() {
		System.out.println("Add cocoa...");
	}

	@Override
	public Chocolate getChocolate() {
		addCocoa();
		return this;
	}
}

NutsChocolate extends Chocolate {

	public NutsChocolate() {
		type = ChocolateType.WITH_NUTS;
	}

	protected void addMilk() {
		System.out.println("Add milks...");
	}

	protected void addNuts() {
		System.out.println("Add nuts...");
	}

	@Override
	public Chocolate getChocolate() {
		addMilk();
		addNuts();
		return this;
	}
}

public class Main {

	public static void main(String args[]) {
		ChocolateFactory factory = new WedelFactory();
		Chocolate milk = factory.produceChocolate(ChocolateType.MILK);
		Chocolate dark = factory.produceChocolate(ChocolateType.DARK);
		Chocolate withNuts = factory.produceChocolate(ChocolateType.WITH_NUTS);
	}
}
Dodaj komentarz