//product
public interface MilkProduct {
String getName();
float getWeight();
}
//creator
//в абстрактном классе можно сделать процедуры по созданию продукта по умолчанию
//или какие-то общие действия
public abstract class MilkProductCreator {
abstract public MilkProduct getProduct();
}
//concrete product
public class Butter implements MilkProduct {
private float weight = 3.5f;
final private static String NAME = "Масло";
@Override
public float getWeight() {
return weight;
}
@Override
public String getName() {
return NAME;
}
}
//concrete product
public class SourCream implements MilkProduct {
private float weight = 1.3f;
final private static String NAME = "Сметана";
@Override
public float getWeight() {
return weight;
}
@Override
public String getName() {
return NAME;
}
}
//concrete creator
public class ButterCreator extends MilkProductCreator {
@Override
public MilkProduct getProduct() {
return new Butter();
}
}
//concrete creator
public class SourCreamCreator extends MilkProductCreator {
@Override
public MilkProduct getProduct() {
return new SourCream();
}
}
public class Application {
public static void main(String[] args) {
MilkProductCreator[] milkProductCreators = {
new ButterCreator(),
new SourCreamCreator()
};
for (MilkProductCreator milkProductCreator : milkProductCreators) {
MilkProduct milkProduct = milkProductCreator.getProduct();
System.out.printf(
"%s. Вес: %.1f кг\n",
milkProduct.getName(), milkProduct.getWeight()
);
}
}
}
/*
* Output:
* Сметана. Вес: 1,3 кг
* Масло. Вес: 3,5 кг
*/
четверг, 11 августа 2011 г.
Паттерн фабричный метод. Пример кода
Подписаться на:
Комментарии к сообщению (Atom)
Спасибо! Помогло!
ОтветитьУдалить