Ocena użytkownikóww: ***** / 7
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);
}
}