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

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



Advertisements
Похожие презентации
Программная иженерия Андрей Дмитриев ©
Advertisements

Язык программирования Java Дмитриев Андрей Владиславович Май 2007.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Программная инженерия Андрей Дмитриев ©
Test 6 Вопрос 1. Как можно уничтожить объект в Java? a)присвоить null всем ссылкам на объект b)вызвать Runtime.getRuntime().gc() c)вызвать метод finalize()
Язык программирования Java Дмитриев Андрей Владиславович 2007.
Язык программирования Java Дмитриев Андрей Владиславович 2007.
Язык программирования Java Дмитриев Андрей Владиславович Май 2007.
Программная инженерия Дмитриев Андрей Владиславович
Test 10 Вопрос 1. public class Test implements Iterator { // 1 private List list = new ArrayList (); // 2 public void addList(T... ts) { Collections.addAll(list,
Встроенные классы в Java Макаревич Л. Г.. Разновидности встроенных классов Вложенные (Nested) классы Внутренние (Inner) классы Локальные классы Анонимные.
Программная иженерия Андрей Дмитриев ©
Обработка исключительных ситуаций. Синтаксис try{ операторы0; } catch (ТипИсключения1 переменная1){ операторы1; } catch (ТипИсключения2 переменная2){
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
Изучение динамического определения типов. Класс Class. Динамическая загрузка и инстанцирование классов. В Java вся информация о классе хранится в специальном.
Дружественные функции Дружественные функции – это функции, объявленные вне класса, но имеющие доступ к закрытым и защищенным полям данного класса Дружественная.
Java. Part 2. Спецификаторы доступа public private protected не указан – доступ в пределах пакета Могут использоваться перед классами, методами, полями.
Test 5 Вопрос 1. В результате компиляции каких строк будет происходить ошибка компиляции: public class Main { public static void main(String[] args) {
Лекция 2.Основы объектной модели Java 1. Содержание 1.Основы ООП. 2.Понятия «класс» и «объект». 3.Поля и методы класса. Спецификаторы доступа: public,
Программная инженерия Андрей Дмитриев ©
Транксрипт:

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

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

Одиночка (Singleton) Это реализация класса, экземпляров которого не может быть больше одного. Часто используется для организации доступа к одному и тому же набору данных из нескольких других классов.

Одиночка (попытка 1) public class Singleton { public final static Singleton instance = new Singleton(); public static void main(String [] s) { Singleton st = new Singleton(); if (st == Singleton.instance){ System.out.println("equality"); } else { System.out.println("inequality"};

Одиночка (попытка 2) private Singleton(){} //определим конструктор, таким образом, удалив конструктор по умолчанию(public) public static void main(String [] s) { Singleton st = new Singleton(); if (st == Singleton.instance){ System.out.println("equality"); } else { System.out.println("inequality"); }

Одиночка (попытка 3) public class RunSingleton { public static void main(String [] s) { Singleton st = new Singleton(); //ошибка if (st == Singleton.instance){ System.out.println("equality"); } else { System.out.println("inequality"); }

Одиночка (реализация) public class PrintSpooler { private static PrintSpooler spooler; private PrintSpooler() { //прячем конструктор} public static synchronized PrintSpooler getSpooler(){ if (spooler == null) //инициализируем экземпляр если это первый вызов spooler = new PrintSpooler(); return spooler; // возвращаем статический экземпляр } public void print(String s){ System.out.println(s); } }

Одиночка (не перекрытый конструктор) public Spooler() throws SingletonException{ //Контроль с открытым конструктором if(instance_flag) throw new SingletonException(…); else instance_flag = true; //устанавливаем контролирующий флаг System.out.println("printer opened"); }

Одиночка (выводы) Легко расширить класс до возможности существования более одного экземпляра. Реализация наследование от класса-одиночки требует глубокого анализа. PrintSpooler pr3 = new PrintSpooler(); //ошибка компиляции

Q&A

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