верно ли то что существуют такие классы которые могут иметь один и только один экземпляр
Объектно-ориентированное программирование Ответы МФПУ
Продаж: 2 последняя 55 дн. назад
Возвратов: 0
Загружен: 13.03.2021
Содержимое: Ответы.zip 683,79 Кбайт
Продавец
Описание товара
1.Как называется специализированный метод класса, предназначенный для создания нового экземпляра?
2.Что из перечисленного может быть отнесено к преимуществам шаблона «строитель»?
3.Что из перечисленного может быть отнесено к членам класса?
4.Что из перечисленного может быть отнесено к недостаткам шаблона «отложенная инициализация»?
5.Что из перечисленного может быть отнесено к преимуществам шаблона «заместитель»?
6.Верно ли, что MVC позволяет визуализировать одни и те же данные разными способами без изменения модели?
7.Сочетание объединения всех свойств объекта, определяющих его состояние и поведение, в единую абстракцию и ограничение доступа к реализации этих свойств называется
8.Каким образом будет выглядеть инструкция, указывающая на принадлежность описываемого класса к пакету test, который в свою очередь является подпакетом класса bigtest?
9.Верно ли, что абстрактный класс не может содержать реализаций методов?
10.Верно ли, что в активной модели MVC об изменениях данных представление оповещает контроллер?
11.Верно ли, что в пассивной модели MVC об изменениях данных представление оповещает контроллер?
12.Как называется один из фундаментальных механизмов объектно-ориентированного программирования, позволяющий классу ограничивать доступ к своим членам?
13.Верно ли, что концепция MVC включает в себя ровно три структурных составляющих: модель, вид и контроллер?
14.Верно ли, что наиболее общим отношением между классами является отношение зависимости?
15.Верно ли, что один абстрактный класс не может являться родительским по отношению к другому абстрактному классу?
16.Верно ли, что основная цель использование концепции MVC – разграничение логики работы и визуализации?
17.Верно ли, что основная цель использование концепции MVC – упрощение архитектуру приложения?
18.Верно ли, что отношение агрегации может применяться для изображения иерархических отношений между классами?
19.Верно ли, что понятие «суперкласс» является синонимом родительского класса?
20.Верно ли, что понятия «вложенный класс» и «класс-член» являются синонимами?
21.Верно ли, что программист не может управлять сборкой мусора?
22.Задачи какого рода решают основные шаблоны проектирования?
23.Задачи какого рода решают поведенческие шаблоны проектирования?
24.Задачи какого рода решают порождающие шаблоны проектирования?
25.Задачи какого рода решают структурные шаблоны проектирования?
26.Какая из парадигм программирования является ведующей в языке Java?
27.Какая команда используется для выполения байт-кода?
28.Какие группы шаблонов проектирования обычно выделяют?
29.Какие задачи позволяет решать ключевое слово final?
30.Какие из перечисленных требований должны выполняться для создания шаблона «неизменяемый объект» в Java?
31.Какие из перечисленных утверждений касательно высокоуровневых шаблонов проектирования верны?
32.Какие из перечисленных утверждений касательно низкоуровневых шаблонов проектирования верны?
33.Какие из предлагаемых утверждений верны?
34.Какие типы связей используют в UML?
35.Какие типы сущностей выделяют в UML?
36.Каково основное назначение статического импорта?
37.Какое из перечисленных утверждений верно?
38.Какое ключевое слово может быть использовано для обращения экземпляра класса к самому себе?
39.Какое количество секций может содержать блок описания интерфейса на UML-диаграмме классов?
40.Какое количество секций может содержать блок описания класса на UML-диаграмме классов?
41.Как расшифровывается аббревиатура UML?
42.Что из перечисленного может быть отнесено к недостаткам шаблона «отложенная инициализация»?
43.Что из перечисленного может быть отнесено к преимуществам шаблона «адаптер»?
44.… к преимуществам шаблона «декоратор»?
45.… шаблона «делегирование»?
46.… шаблона «заместитель»?
47.… шаблона «итератор»?
48.… шаблона «команда»?
49.… шаблона «компоновщик»?
50.… шаблона «мост»?
Один экземпляр класса
Как эффективно реализовать создание только одного экземпляра класса? Необходимо чтобы создавать можно было только один объект. Вот что получилось у меня
Насколько это правильно? И Можно ли сделать так, чтобы метод newLoader() не возвращал null в случае наличия уже созданного объекта, а присваивал ссылке тот же объект? То есть чтобы ссылка на объект не терялась.
6 ответов 6
Вы «изобрели» singleton, в интернете полно примеров реализации.
Самый простой пример:
На мой взгляд самый удобный способ в java создать Singleton :
Советую прочитать статью «Правильный Singleton в Java» на Хабрахабре.
если говорить о синглтонах то есть вот такая реализация «из коробки»/ by classloader, хочу отметить что в отличие от примера выше тут не нужна синхронизация:
но все же лучше использовать Dependency Injection
Вообще, singleton я считаю здесь не нужен! Каждый вызов getInstance() занимает наносекунды на проверку условия if(. )
Считаю, что данный вариант оптимален, ибо быстрее чем сразу не бывает:
Замечание: Отражения в Java в любом случае позволяют обойти всё, что вы придумаете для создания «единственного» экземпляра, и создать множество других 😉
Я бы наверное так сделал:
Всё ещё ищете ответ? Посмотрите другие вопросы с метками java или задайте свой вопрос.
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.11.12.40742
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
1. Задачи какого рода решают основные шаблоны проектирования? Повседневные задачи: переадресация работы, обеспечение слабой связности системы и так далее+
Абстрагирование процесса создания экземпляров класса
Создание различных структур, изменяющих поведение уже существующих объектов
Определяют алгоритмы и способы взаимодействия объектов между собой
2. Задачи какого рода решают поведенческие шаблоны проектирования?
Повседневные задачи: переадресация работы, обеспечение слабой связности системы и так далее
Создание различных структур, изменяющих поведение уже существующих объектов
Абстрагирование процесса создания экземпляров класса
Определяют алгоритмы и способы взаимодействия объектов между собой+
3. Задачи какого рода решают порождающие шаблоны проектирования?
Повседневные задачи: переадресация работы, обеспечение слабой связности системы и так далее
Абстрагирование процесса создания экземпляров класса+
Создание различных структур, изменяющих поведение уже существующих объектов
Определяют алгоритмы и способы взаимодействия объектов между собой
4. Задачи какого рода решают структурные шаблоны проектирования?
Определяют алгоритмы и способы взаимодействия объектов между собой
Создание различных структур, изменяющих поведение уже существующих объектов+
Повседневные задачи: переадресация работы, обеспечение слабой связности системы и так далее
Абстрагирование процесса создания экземпляров класса
5. Каким символом на диаграмме классов изображается тот факт, что атрибут имеет область видимости private? –
6. Каким символом на диаграмме классов изображается тот факт, что атрибут имеет область видимости protected?
#+
7. Каким символом на диаграмме классов изображается тот факт, что атрибут имеет бесконечную кратность?
*+
8. Каким символом на диаграмме классов изображается тот факт, что атрибут имеет область видимости public?
+
9. Верно ли то, что отношение композиции является частным случаем отношения агрегации?
Да+
Нет
10. Верно ли то, что существуют такие классы, которые могут иметь один и только один экземпляр?
Да+
Нет
11. Верно ли, что понятие «суперкласс» является синонимом родительского класса?
Да+
Нет
12. Верно ли, что понятия «вложенный класс» и «класс-член» являются синонимами?
Да
Нет+
13. Верно ли, что программист не может управлять сборкой мусора?
Да+
Нет
14. Верно ли, что концепция MVC включает в себя ровно три структурных составляющих: модель, вид и контроллер?
Да+
Нет
15. Верно ли, что наиболее общим отношением между классами является отношение зависимости?
Да+
Нет
16. Верно ли утверждение о том, что Java является декларативным языком программирования?
Да
Нет+
17. Верно ли утверждение о том, что Java является императивным языком программирования?
Да+
Нет
18. Верно ли, что Java позволяет создавать массив заранее известных величин?
Да+
Нет
19. Верно ли, что MVC позволяет визуализировать одни и те же данные разными способами без изменения модели?
Да+
Нет
20. Верно ли, что MVC позволяет подключать к одному виду несколько контроллеров?
Да+
Нет
21. Верно ли, что для создания десктруктора в Java используется блок finalize?
Да+
Нет
22. Верно ли, что один абстрактный класс не может являться родительским по отношению к другому абстрактному классу?
Да
Нет+
23. Верно ли, что абстрактный класс не может иметь экземпляров?
Да+
Нет
24. Верно ли, что абстрактный класс не может содержать реализаций методов?
Да
Нет+
25. Верно ли, что в активной модели MVC об изменениях данных представление оповещает контроллер?
Да
Нет+
26. Верно ли, что в пассивной модели MVC об изменениях данных представление оповещает контроллер?
Да+
Нет
27. Верно ли, что основная цель использование концепции MVC – разграничение логики работы и визуализации?
Да+
Нет
28. Верно ли, что основная цель использование концепции MVC – упрощение архитектуру приложения?
Да
Нет+
29. Верно ли, что отношение агрегации может применяться для изображения иерархических отношений между классами?
Да
Нет+
30. Как расшифровывается аббревиатура JRE?
Java Runtime Environment
31. Как расшифровывается аббревиатура JDK?
Java Development Kit
32. Как расшифровывается аббревиатура JVM?
Java Virtual Machine
33. Какая из парадигм программирования является ведующей в языке Java?
Объектно-ориентированная+
Процедурная
Событийно-ориентированная
Компонентно-ориентированная
34. Какая команда используется для выполения байт-кода?
java
javac+
javar
javarun
35. Какие группы шаблонов проектирования обычно выделяют?
Основные +
Порождающие +
Структурные +
Поведенческие+
36. Какие задачи позволяет решать ключевое слово final?
Создание ненаследуемых методов
Создание абстрактных классов
Создание непереопределяемых методов +
Создание неизменяемых полей +
Создание классов, которые не могут иметь наследников+
37. Какие из перечисленных требований должны выполняться для создания шаблона «неизменяемый объект» в Java?
Все поля класса должны иметь модификатор private
Все методы класса должны быть объявлены с модификатором static
Ссылка this не должна передаваться вовне во время конструирования объекта +
Класс должен быть объявлен с модификатором final+
38. Какие из перечисленных утверждений касательно высокоуровневых шаблонов проектирования верны?
Высокоуровневые шаблоны также называют архитектурными+
Высокоуровневые шаблоны являются универсальными решениями+
Несмотря на то, что высокоуровневые шаблоны являются универсальными, они учитывают специфические особенности конкретных языков программирования
Высокоуровневые шаблоны также называют идиомами
39. Какие из перечисленных утверждений касательно низкоуровневых шаблонов проектирования верны?
Низкоуровневые шаблоны учитывают специфику языка+
программирования +
Низкоуровневые шаблоны также называют идиомами
Низкоуровневые шаблоны являются универсальными
Низкоуровневые шаблоны не используются в прикладных разработках
40. Какие из предлагаемых утверждений верны?
Статическим называется член класса, доступ к которому возможен без создания экземпляра +
Создание статического метода возможно только при использовании ключевого слова static +
Статические поля являются общими для всех экземпляров класса+
Статические поля недоступны экземплярам класса
41. Какие типы связей используют в UML?
Зависимость +
Ассоциация +
Обобщение +
Реализация+
42. Какие типы сущностей выделяют в UML?
Поведенческие +
Аннотирующие +
Структурные +
Группирующие+
43. Каково основное назначение статического импорта?
Позволяет JVM эффективно перенаправлять запросы к классам из других пакетов, принимая во внимание их статическую структуру
Позволяет обращаться к статическим членам без явного указания класса-владельца+
Добавляет в область видимости описываемого класса все статические структуры из указанного пакета
44. Какое из перечисленных утверждений верно?
UML создан путем объединения всех существующих подходов проектирования того времени
UML создан на основе наиболее популярных подходов проектирования того времени+
UML является исторически первым языком моделирования
45. Какое ключевое слово может быть использовано для обращения экземпляра класса к самому себе?
this+
super
instanceof
own
46. Какое количество секций может содержать блок описания интерфейса на UML-диаграмме классов?
Одну +
Две+
Три
Четыре
47. Какое количество секций может содержать блок описания класса на UML-диаграмме классов?
Одну +
Три +
Две+
Четыре
48. Как расшифровывается аббревиатура UML?
Unified Modeling Language+
Universally Modeling Language
Unified Modern Language
Universally Modern Luggage
49. Что из перечисленного может быть отнесено к недостаткам шаблона «отложенная инициализация»?
Не позволяет явным образом задать порядок инициализации +
Вносит дополнительную задержку при обращении к объекту+
Порождает дополнительные ошибки при многопоточной работе
Замедляет инициализацию объектов
50. Что из перечисленного может быть отнесено к преимуществам шаблона «адаптер»?
Увеличивает степень независимости системы от сторонних библиотек+
Смена библиотек не требует изменения всей системы+
Ускорение начальной инициализации
Минимизация задержки при обращении
51. Что из перечисленного может быть отнесено к преимуществам шаблона «делегирование»?
Позволяет изменить поведение избегая наследования+
Повышает степень абстракции+
Положительно сказывается на времени обработки запроса системой
Сокращает число элементов в адресном пространстве
52. Что из перечисленного может быть отнесено к преимуществам шаблона «декоратор»?
Позволяет динамически добавлять объектам новые обязанности+
Упрощает структуру отдельных классов+
Сокращает количество имен в адресном пространстве
Не требует дополнительной иерархии классов
53. Что из перечисленного может быть отнесено к преимуществам шаблона «заместитель»?
Позволяет инициализировать объекты по требованию +
Позволяет придать объектам дополнительный функционал+
Сокращает время отклика системы
Не требует создания новых объектов
54. Что из перечисленного может быть отнесено к преимуществам шаблона «итератор»?
Позволяет поддерживать единообразный интерфейс для доступа к элементам системы+
Позволяет поддерживать несколько активных обходов коллекции+
Итератор не должен владеть всей информацией о коллекции
Не требует дополнительной иерархии классов
55. Что из перечисленного может быть отнесено к преимуществам шаблона «команда»?
Позволяет параметризировать объекты выполняемым действием+
Позволяет обрабатывать запросы как объекты+
Упрощает иерархию классов
Уменьшает время отклика системы
56. Что из перечисленного может быть отнесено к преимуществам шаблона «компоновщик»?
Упрощает архитектуру приложения +
Упрощает процедуру добавления новых компонентов в систему+
Позволяет единообразно работать с составными и примитивными структурами
Позволяет ограничить типы используемых компонентов
57. Что из перечисленного может быть отнесено к членам класса?
Вложенный класс
Метод+
Объект
Поле+
58. Что из перечисленного может быть отнесено к преимуществам шаблона «наблюдатель»?
Сокращает цепочку вызовов, необходимую для уведомления наблюдателей об изменении состояния объекта
Абстрагирует связность объекта и наблюдателей+
Позволяет обеспечить широковещательную рассылку уведомлений+
Повышает степень повторной используемости кода+
59. Что из перечисленного может быть отнесено к преимуществам шаблона «неизменяемый объект»?
Позволяет предотвратить ряд ошибок+
Может быть использован в качестве ключа коллекции +
Удобен для многопоточной работы+
Положительно сказывается на скорости работы
60. Что из перечисленного может быть отнесено к преимуществам шаблона «хранитель»?
Позволяет сохранять внутренне состояние объекта+
Упрощает структуру класса-владельца+
Не раскрывает детали реализации класса-владельца+
Позволяет восстанавливать состояние класса-владельца
61. Что из перечисленного может быть отнесено к преимуществам шаблона «цепочка ответственности»?
Гарантирует, что рано или поздно запрос будет обработан
Позволяет ослабить связи внутри системы+
Не требует дополнительной иерархии классов
Придает дополнительную гибкость при распределении обязанностей+
62. Что из перечисленного может быть отнесено к преимуществам шаблона «одиночка»?
Сокращение числа имен в глобальном адресном пространстве+
Предоставление глобальной точки доступа+
Ускорение начальной инициализации
Минимизация задержки при обращении в силу статической сущности
63. Что из перечисленного может быть отнесено к преимуществам шаблона «посредник»?
Централизовывает управление+
Обеспечивает слабую связность системы+
Упрощает протоколы взаимодействия между компонентами+
Повышает степень повторной используемости кода
64. Что из перечисленного может быть отнесено к преимуществам шаблона «прототип»?
Позволяет специфицировать новые объекты путем изменения значений+
Позволяет сократить иерархию классов+
Позволяет динамически конфигурировать приложение классами+
Значительно уменьшает время, необходимое на создание новых объектов
65. Что из перечисленного может быть отнесено к преимуществам шаблона «состояние»?
Изолирует логику работы от реализации+
Не требует дополнительных имен в адресном пространстве
Позволяет полностью скрыть информацию о классе-владельце
Позволяет избегать применения цепочек условных операторов+
66. Что из перечисленного может быть отнесено к преимуществам шаблона «стратегия»?
Позволяет оперировать семейством алгоритмов+
Предотвращает порождение большого числа подклассов
Сокращает цепочки условных операторов, реализующих сложное поведение системы+
Позволяет динамически выбирать реализацию алгоритма+
67. Что из перечисленного может быть отнесено к преимуществам шаблона «строитель»?
В сравнении с фабричным методом придает дополнительную гибкость процессу конструирования объектов+
Изолирует код конструирования объектов+
Позволяет изменять внутреннее представление объекта+
Не требует дополнительной иерархии классов
68. Что из перечисленного может быть отнесено к преимуществам шаблона «фабричный метод»?
Положительно сказывается на скорости работы
Позволяет устанавливать связь между параллельными иерархиями классов
Сокращает количество имен в адресном пространстве
Позволяет сделать код создания объектов более универсальным+
69. Что из перечисленного может быть отнесено к преимуществам шаблона «фасад»?
Изолирует клиентов от подсистем+
В большинстве случаев приводит к сокращению числа имен в адресном пространстве клиентов
Облегчает устройство системы+
Ограничивает доступ клиентов к подсистемам
70. Каким образом будет выглядеть команда для компиляции класса test, описанного в файле test.java?
javac test.java
71. Сколько байт в памяти ЭВМ занимается одна переменная типа char?
2
72. Как называется один из фундаментальных механизмов объектно-ориентированного программирования, позволяющий классу ограничивать доступ к своим членам?
Инкапсуляция
73. Как называется один из фундаментальных механизмов объектно-ориентированного программирования, позволяющий одному классу расширять функциональность другого, заимствуя при этом поля и методы?
Наследование
74. Как называется один из фундаментальных механизмов объектно-ориентированного программирования, позволяющий элементам с одинаковой спецификацией иметь различную реализацию? Полиморфизм
75. Как называется специализированный метод класса, предназначенный для создания нового экземпляра?
Конструктор
76. Как называется специализированный метод класса, предназначенный для уничтожения существующего экземпляра?
Деструктор
77. Какое ключевое слово используется для указания класса-родителя?
Super
78. Какое ключевое слово используется для указания того, что класс реализует интерфейс?
Implements
79. Какое название получил механизм, позволяющий JVM работать с примитивными типами данных как с объектами?
Автоупаковка
80. Какой вид будет иметь инструкция, добавляющая в область видимости описываемого класса все классы из пакета test?
import test.*;
81. Каким образом будет выглядеть инструкция, указывающая на принадлежность описываемого класса к пакету test, который в свою очередь является подпакетом класса bigtest?
package bigtest.test;
82. Какой вид будет иметь инструкция, добавляющая в область видимости описываемого класса класс test из пакета test?
import test.test;
83. Какой вид будет иметь инструкция, указывающая на принадлежность описываемого класса к пакету test?
package test;
84. С помощью какой команды может быть создан вектор с именем test из элементов типа TestEl?
Vector test = new Vector ();
85. С помощью какой команды может быть создан массив с именем test из десяти элементов типа int?
int[] test = new int[10];
86. Как будет выглядеть команда для запуска класса Test, готовый байт код которого содержится в файле Test.class
java Test
87. Как называется организация, регулирующая развитие UML?
OMG+
ANSI
ACM
NASA
88. Что из перечисленного может быть отнесено к членам класса?
Вложенный класс
Метод+
Объект
Поле+
89. Что из перечисленного может быть отнесено к преимуществам шаблона «шаблонный метод»?
Помогает избегать дублирования повторяющихся конструкций+
Позволяет динамически варьировать поведение системы+
Позволяет оптимизировать передачу данных при вызове методов
Не требует дополнительной иерархии классов
Это плохая идея создать класс, который будет иметь только один экземпляр?
Является ли это плохой практикой /дизайном кодирования для создания класса, который будет создан только один раз?
У меня есть некоторые переменные и функции, которые могут быть сгруппированы вместе под классом, чтобы «хорошо выглядеть» (из-за отсутствия лучшего описания), поскольку они несколько связаны друг с другом, но они могут быть просто глобальными переменными и глобальными функциями.
(Btw, я использую JavaScript, AngularJS, Express, MongoDB.)
7 ответов
Один экземпляр для класса имеет смысл, если объект представляет один ресурс, например, соединение ethernet или диспетчер задач операционной системы.
Функции помещаются в класс только в том случае, если они действуют на переменные экземпляров этого класса, иначе сопровождающий будет смущен намерением этого класса.
Обычно существует веская причина, почему ваше приложение имеет глобальные переменные. Попытайтесь найти общую цель для них и создать класс вокруг этой цели. Это не только упростит дизайн, но и ваш ум.
Нет проблем с написанием класса, который заканчивается тем, что он запускается только один раз.
Если помещать некоторые переменные и функции вместе внутри класса, имеет смысл, имеет семантическое значение или делает код более простым для чтения и манипулирования, то так оно и будет, сторонники будут благодарны.
Что может быть очень плохо, однако, заключается в обеспечении уникальности изнутри.
Многие люди склонны запускать одноэлементный шаблон, как только они думают, что им нужен только один экземпляр чего-то. См. Например, как вы не подробно описали свой контекст, но большинство ответов уже предлагают вам использовать одноэлемент. И тогда дизайн может быть завинчен, потому что если вам понадобится другой экземпляр в какой-то момент по какой-либо причине, класс помешает вам сделать это, не меняя большого количества кода.
Итак, в качестве одного из примеров, один экземпляр в порядке, но убедитесь, что:
Является ли это плохой практикой /дизайном кодирования для создания класса, который будет создан только один раз?
Нет, даже если он был создан только один раз, вам нужен класс для него. Но не думайте, что вам будет всегда нужен только один экземпляр, теперь и в будущем.
Предположим, что вы создали игру, и у вас есть класс игрока:
Вы создадите экземпляр одного класса игрока в своей игре и всегда будете использовать один и тот же объект. Ничего плохого в этом.
То же самое с кэшами. Или регистраторы. Или сетевые интерфейсы. Сегодня вы думаете, что вам понадобится только один, всегда, наверняка. Но в будущей версии вам нужно добавить вторую. Помните об этой ситуации.
Существуют классы singleton и общий шаблон проектирования.
Есть также классы, которые никогда не создаются. Если у вас есть функции, которые НЕ работают в каком-либо постоянном состоянии (например, они берут ввод и преобразуют его), вы обычно можете использовать статический метод. На некоторых языках (например, Java) эти статические методы будут объявлены в классе, но сам класс никогда не будет создан.
Синтаксический шаблон является общим. Это позволяет вам применять один экземпляр класса.
Но для некоторых это слишком часто, поэтому он становится анти-шаблоном. Причина этого в том, что она практически такая же, как и в глобальном состоянии. И любое глобальное состояние сложно издеваться, тестировать и трудно отлаживать. Но в то же время, если явным образом передаю этот один экземпляр везде в вашем коде, он может вызвать много раздувания кода. Но это заставит вас задуматься о правильной архитектуре. Если группа классов использует этот один синглтон, вы можете сказать, что они каким-то образом связаны и создают для них общий предок, который будет инкапсулировать этот один экземпляр для них.
Плохо предположить, что что-то повсеместно плохо. В вашем случае, может быть, это была бы хорошая идея, но, учитывая, что вы используете язык, который не является OO в ядре, более вероятно, что он просто использует свободные методы и переменные и помещает их в общую библиотеку, которую вы включаете в свою другая работа.
Вы задаете два вопроса в одном.