
Лаб_9 Головков И.Е. 12002108 Одиночка
.docxБЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ
ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»
(НИУ «БелГУ»)
ИНСТИТУТ ИНЖЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ
Кафедра информационных и робототехнических систем
Отчет по лабораторной работе № 9 по дисциплине «Методы и средства проектирования информационных систем и технологий»
Вариант № 3
Тема работы «Одиночка»
студента очного отделения
3 курса 12002108 группы
Головкова Игоря Евгеньевича
Проверил:
асс. Пузырев Никита Сергеевич
БЕЛГОРОД, 2024
В проекте лабораторной работы №4. (Формы) создать класс одиночку. Перенести в данный класс экземпляр класса с данными из лабораторной 1. Создать в классе одиночке методы для изменения данного экземпляра и получения нужных данных. Изменить обращение к данным из методов форм через класс одиночку.
Диаграмма классов для программы представлена на рисунке 1.
Рисунок 1 – Диаграмма классов
Результат работы программы, использующей паттерны одиночка и адаптер (из л.р. 1), представлена на рисунках 2 и 3.
Рисунок 2 – Результат работы программы, использующей паттерны одиночка и адаптер
Рисунок 3 – Результат работы программы, использующей паттерны одиночка и адаптер с другим треком
// Класс FxmlApplication
public class FxmlApplication extends Application { @Override public void start(Stage stage) throws IOException { FXMLLoader fxmlLoader = new FXMLLoader(FxmlApplication.class.getResource("hello-view.fxml")); Scene scene = new Scene(fxmlLoader.load()); stage.setTitle("Lab 3 Singleton"); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(); } }
// Класс FxmlController
public class FxmlController { @FXML private Button trackButton; @FXML private TextField trackField; @FXML private Label trackLabel; @FXML private void setTrackName() { IPlayer player = new PlayerAdapter(); trackLabel.setText(STR."Для человека с Id \{PersonSingleton.getInstance().hashCode()}" + STR." \{PersonSingleton.getInstance().playTrack(player, trackField.getText())}"); } }
//Интерфейс IPlayer
public interface IPlayer { String getPlayingTrack(String trackName); }
// Класс PersonSingleton
class PersonSingleton { private static volatile PersonSingleton instance; private PersonSingleton() { } public static synchronized PersonSingleton getInstance() { if (instance == null) { instance = new PersonSingleton(); } return instance; } public String playTrack(IPlayer player, String trackName) { return STR."\{player.getPlayingTrack(trackName)}" ; } }
// Класс Player
@Setter public class Player { private String trackName; public String play() { return STR."Играет песня: \{trackName}"; } }
// Класс PlayerAdapter
public class PlayerAdapter implements IPlayer { Player player = new Player(); @Override public String getPlayingTrack(String trackName) { player.setTrackName(trackName); return player.play(); } }