Главная » 2013 » Май » 21 » Шаблоны проектирования. Абстрактная фабрика
11:58
Шаблоны проектирования. Абстрактная фабрика
Шаблон проектирования "Абстрактная фабрика" (Abstract Factory) относится к производящим шаблонам. Этот паттерн предназначен для создания группы объектов. Смысл в том, что их конкретные классы не объявляются, позволяя заменять их в дальнейшем, как отдельные объекты так и все
взаимосвязанное семейство. По сути, шаблон абстрактная фабрика представляет собой набор Фабричных методов (шаблон "Фабричный метод" Factory Method)
Пример:
//абстракные классы описывающие автомобиль - кузов, подвеску, салон abstract class Body{ abstract String getBody(); }
abstract class Lug{ abstract String getLug(); }
abstract class Salon{ abstract String getSalon(); }
//интерфейс определяет группу объектов, которые создаются абстрактной фабрикой interface Car{ //создание кузова Body CreateBody(); //создание подвески Lug CreateLug(); //создание салон Salon CreateSalon(); }
//конкретные классы для автомобиля Лада class LadaBody extends Body{
@Override String getBody() { return "Кузов автомобиля Лада"; } }
class LadaLug extends Lug{ @Override String getLug(){ return "Подвеска автомобиля Лада"; } }
class LadaSalon extends Salon{ @Override String getSalon(){ return "Салон автомобиля Лада"; } }
//конкретный класс, который создает набор связанных объектов для автомобиля Лада class LadaFactory implements Car{
@Override public Body CreateBody() { return new LadaBody(); }
@Override public Lug CreateLug() { return new LadaLug(); }
@Override public Salon CreateSalon() { return new LadaSalon(); }
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { //создаем в системе фабрику для инстанцирования отдельных узлов автомобиля Лада LadaFactory lf = new LadaFactory(); //создаем отдельные узлы авто через фабрику jTextArea1.append(lf.CreateBody().getBody() + "\n"); jTextArea1.append(lf.CreateLug().getLug() + "\n"); jTextArea1.append(lf.CreateSalon().getSalon() + "\n");