Разработка приложения с использованием паттерна Decorator



Лабораторная работа № 1. Порождающие паттерны.

Разработка приложения с использованием паттерна Singleton

Создать файл настроек для приложения config.properties (использовать класс java.util.Properties для его чтения). Написать класс с использованием паттерна Singleton, который будет загружать данный файл (один раз) и отдавать экземпляр Properties по запросу. Продемонстрировать работу в методе main() через вывод считанных настроек в консоль.

Разработка приложения с использованием паттерна Factory Method

Написать класс Student. Он должен содержать поле типа String, хранящее фамилию студента, методы для получения и модификации фамилии студента, поле marks, хранящее массив типа int, содержащий оценки по предметам, методы для получения и модификации значения элемента массива, поле subjects, хранящее массив типа String, содержащий названия предметов, методы для получения и модификации значения элемента массива, метод добавления предмета и оценки в соответствующие массивы с увеличением их длин (путем создания новых массивов, использовать метод Arrays.copyOf()), метод для получения размера массивов.

Конструктор класса должен принимать в качестве параметров значение фамилии и размер массивов.

Написать класс Schoolboy (или Schoolgirl), реализующий функциональность, сходную с классом Student. Оценки и предметы должны быть представлены полями внутреннего класса Register, класс Schoolboy(или Schoolgirl) хранит массив Register'ов.

Описать интерфейс Pupil, имеющий методы, соответствующие общей функциональности двух созданных классов. Сделать так, чтобы оба класса реализовывали этот интерфейс.

Написать класс Pupils со статическими методами таким образом, чтобы он работал со ссылками типа интерфейса. В классе должны быть методы вывода на экран предметов и оценок, а также метод, возвращающий среднее арифметическое оценок ученика.

Описать новый интерфейс PupilFactory, содержащий единственный метод createInstance(), создающий нового ученика. В качестве параметров метод принимает фамилию ученика и размер массивов предметов и оценок (или размер массива Register'ов).

В классе Pupils создать приватное статическое поле factory типа PupilFactory и соответствующий ему публичный метод setPupilFactory(), позволяющие, соответственно, хранить ссылку и устанавливать ссылку на текущую фабрику. По умолчанию поле должно ссылаться на объект некоторого класса StudentFactory (его также требуется описать), порождающего экземпляры класса Student.

В классе Pupils описать метод public static Pupil createInstance(String name, int size), с помощью текущей фабрики создающий новый экземпляр ученика.

Проверить работу фабричного метода в методе main().

Разработка приложения с использованием паттерна Prototype

Добавить в классы Student и Schoolboy реализации методов Object clone(). Клонирование должно быть глубоким. Использовать super.clone().

Проверить работу методов clone() в методе main().

Вопросы:

1. Группа, описание, назначение, область применения, особенности реализации и структурная схема паттерна Abstract Factory.

2. Группа, описание, назначение, область применения, особенности реализации и структурная схема паттерна Builder.

3. Группа, описание, назначение, область применения, особенности реализации и структурная схема паттерна Factory Method.

4. Группа, описание, назначение, область применения, особенности реализации и структурная схема паттерна Prototype.

5. Группа, описание, назначение, область применения, особенности реализации и структурная схема паттерна Singleton.


Лабораторная работа № 2. Структурные паттерны.

Разработка приложения с использованием паттерна Adapter

Реализовать класс адаптера, метод которого принимает в качестве параметра массив строк и записывает их по очереди в выходной байтовый поток (OutputStream), который он «адаптирует». Продемонстрировать работу в методе main().

Разработка приложения с использованием паттерна Decorator

Добавить в класс со статическими методами реализацию метода Pupil synchronizedPupil (Pupil p), возвращающего ссылку на класс-обертку указанного ученика, безопасный с точки зрения многопоточности. Для этого потребуется описать некий новый класс, реализующий интерфейс Pupil.


Дата добавления: 2019-02-26; просмотров: 346; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!