Программная иженерия Андрей Дмитриев andrei-dmitriev@yandex.ru ©2007-2010.

Презентация:



Advertisements
Похожие презентации
Язык программирования Java Дмитриев Андрей Владиславович Май 2007.
Advertisements

Программная инженерия Андрей Дмитриев ©
Программная инженерия Андрей Дмитриев ©
Программная иженерия Андрей Дмитриев ©
Язык программирования Java Дмитриев Андрей Владиславович Май 2007.
Язык программирования Java Дмитриев Андрей Владиславович 2007.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Программная инженерия Дмитриев Андрей Владиславович
Программная инженерия Андрей Дмитриев ©
Программная иженерия Андрей Дмитриев ©
Язык программирования Java Дмитриев Андрей Владиславович 2007.
Обобщенные классы в C# Киньзибаев Рашид. Обобщение есть параметризированный тип.
Язык программирования Java Дмитриев Андрей Владиславович 2007.
Язык программирования Java Дмитриев Андрей Владиславович Май 2007.
Наследование Полиморфизм ВЫЗОВ КОНСТРУКТОРОВ И ДЕСТРУКТОРОВ ПРИ НАСЛЕДОВАНИИ.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Программная инженерия Дмитриев Андрей Владиславович
Лекция 9. Введение в ООП. Часть 2 Красс Александр СПбГУ ИТМО, 2008.
Строки Класс String инкапсулирует действия со строками. Объект типа String – строка, состоящая из произвольного числа символов, от 0 до 2*10 9. Литерные.
Программная инженерия Дмитриев Андрей Владиславович 2008.
Транксрипт:

Программная иженерия Андрей Дмитриев ©

Шаблоны проектирования

Фабрика Создает экземпляр класса, принимая во внимание переданные параметры. Позволяет создавать экземпляры различных классов в зависимости от текущих нужд приложения.

Фабрика (базовый класс) public class Namer { //базовый класс protected String last; protected String first; public String getFirst() { return first; //возвращает имя } public String getLast() { return last; //возвращает фамилию }

Фабрика (наследники) public class RUName extends Namer { //Иванов Иван через пробел public RUName(String s) { int i = s.lastIndexOf(" "); //находим пробел if (i > 0) { first = s.substring(0, i).trim(); last = s.substring(i + 1).trim(); } else { first = ""; // пробела нет last = s; // значит просто Иванов }

Фабрика (наследники) public class USName extends Namer { // Антон, Антонов через запятую public USName(String s) { int i = s.indexOf(","); //ищем запятую if (i > 0) { last = s.substring(0, i).trim(); first = s.substring(i + 1).trim(); } else { last = s; //нет запятой first = ""; //все считаем за фамилию }

Класс-фабрика public class NamerFactory { //Возвращает тот или иной класс на основе факта присутствия запятой public Namer getNamer(String entry) { int i = entry.indexOf(","); if (i > 0) return new USName (entry); else return new RUName(entry); }… Данный класс возвращает подходящий экземпляр в зависимости от требований вызывающего класса. Как правило, экземпляры принадлежат одной иерархии наследников.

Выводы Предоставляет гибкий контроль за типом, количеством, временем создания порождаемых объектов. Изменение поведения фабрики и порождаемых объектов в течение работы программы.

Q&A

Спасибо! Андрей Дмитриев ©