Приветствую Вас ГостьСреда, 15.05.2024, 00:12

Программирование на Java, Android, Delphi


Блог

Главная » 2013 » Апрель » 30 » Шаблоны проектирования. Фабричный метод.
16:26
Шаблоны проектирования. Фабричный метод.
Шаблон проектирования "Фабричный метод" FactoryMethod относится к производящим шаблонам, то есть используется для генерации объектов. Для реализации этого шаблона у нас должен быть абстрактный класс Product и абстрактный класс Creator, который работает с абстрактным классом Product и имеет метод для генерации абстрактного продукта. Далее мы создаем конкретные варианты продуктов, унаследовав их от абстрактного класса Product и конкретные классы создателей этих продуктов с переписанными методами генерации продуктов. Таким образом, мы реализуем создание и обработку объектов абстрактного типа, оставляя за потомками право указать конкретный тип объекта, который будет обрабатываться.

Схема паттерна Factory Method (Фабричный метод)


Пример:

//абстрактный класс управления настройками приложения
abstract class ControlSettings{
public abstract void write(String key, String value);
public abstract String read(String key);
}

//абстрактный класс с фабричным методом
abstract class ControlSettingsCreator{
//фабричный метод Create() - объект какого типа будет создаваться уточним в потомках
public abstract ControlSettings Create();
}


class FileControlSettings extends ControlSettings{

@Override
public void write(String key, String value) {
JOptionPane.showMessageDialog(null, "Записываем в файл настройки ключ: " + key + " значение: " + value + "\n");
}

@Override
public String read(String key) {
return "Читаем настройки из файла";
}

}

//класс с фабричным методом
class FileSettingsCreator extends ControlSettingsCreator{

@Override
public ControlSettings Create() {
return new FileControlSettings();
}

}


class RegistryControlSettings extends ControlSettings{

@Override
public void write(String key, String value) {
JOptionPane.showMessageDialog(null, "Записываем в реестр настройки ключ: " + key + " значение: " + value + "\n");
}

@Override
public String read(String key) {
return "Читаем настройки из реестра";
}

}

//класс с фабричным методом
class RegistrySettingsCreator extends ControlSettingsCreator{

@Override
public ControlSettings Create() {
return new RegistryControlSettings();
}

}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

//создаем объекты, которые реализуют фабричный метод Create() для создания
//конкретных объектов по управлению настройками.
FileSettingsCreator fsCreator = new FileSettingsCreator();
RegistrySettingsCreator rsCreator = new RegistrySettingsCreator();

//переменная абстрактного типа с настройками.
ControlSettings cs;

//с помощью фабричного метода создаем объект для работы с файлом
cs = fsCreator.Create();
cs.write("key1", "value1");
//с помощью фабричного метода создаем объект для работы с реестром
cs = rsCreator.Create();
cs.write("key2", "value2");

}
Категория: Java (Разработка программного обеспечения на Java) | Просмотров: 1751 | Добавил: alex | Теги: AbstractFactory, программы на заказ в Рыбинске, шаблоны, Java, программист, разработка программ в Рыбинске | Рейтинг: 5.0/2
Категории раздела
Java (Общие вопросы) [17]
Java (Библиотека, пакеты Java) [17]
Java (Разработка программного обеспечения на Java) [5]
Java (Среда разработки NetBeans) [5]
JSF + PrimeFaces [21]
Java EE [11]
Разное [3]
Статистика

Онлайн всего: 2
Гостей: 2
Пользователей: 0
Форма входа
Поиск
Календарь
«  Апрель 2013  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Архив записей