Pull to refresh
0
@MacInread⁠-⁠only

User

5
Subscribers
Send message
Потом можно и на стипендию жить, буквально недавно где-то тут в коментах писал об этом.

Не знаю, какая сейчас стипендия. В 2006-2007 году стипендия была РОВНО на место в общежитии, проездной на все виды транспорта, включая метро на месяц, и 50 рублей оставалось на тетрадки, ручку, карандаш. Жить на нее невозможно в принципе было.
Ну как не требует запоминания? Программисты на C святым духом что ли пользуются?

Независимо от того, где ставится крышка/звездочка это требует запоминания. Или только слева, или только справа, или одно слева, другое справа.

Вы все равно не поняли, или я выразился неточно. В С запоминается только одно: звездочка и потом переменная — это разыменовывание. Всё. В Паскале запоминается как синтаксис разыменовавания, так и синтаксис объявления, потому что он нелогичен. В С синтаксис объявления органично следует из синтаксиса разыменовывания.
Отсутствие публичного конструктора или его эквивалента — еще как является.

Неа.
У вас могут быть какие-то приватные поля, которые необходимы для работы объекта, но заполняются они классом самостоятельно.
Вы же не говорите, что класс, скрывая эти поля, выполняет побочную задачу.

Сокрытие конструкторов не отвечает за исходную функциональность — оно для этого не нужно.

Ну так и сокрытие вот тех полей, о которых я написал выше, тоже не отвечает. Класс так же работал бы, будь они публичны.

Это нужно только для реализации синглтона ЧТД.

… а добавление в класс геттеров нужно только для получения этих данных извне, вот чудо-то.
Это ничего не меняет и не делает сокрытие конструктора побочной ответственностью; это деталь реализации.
Я не знаю способа реализации синглтона без нарушения SRP и полагаю что его не существует. Вы легко сможете опровергнуть этот тезис просто предъявив код. Пока то что я видел было либо не SRP либо не синглтон.

Потому что вы предъявляете необоснованные волюнтаристские ограничения.
Конечно, нет. Приватные члены вполне нормальны, ненормально отсуствие публичных.

Ну так есть у этого класса публичные методы — работать-то с ним надо. А конструктор — только приватный. И воспользоваться им может только кто-то friendly, второй класс, который вкупе с первым и образует синглтон.
Сокрытие методов не является возложением ответственности на класс. Существование объекта класса — непосредственно часть его функциональности.
Иначе мы можем сказать, что наличие любого конструктора класса — это возложение на него не связанной с его функциональностью ответственности. Вот есть у нас класс String какой-нибудь. Его функциональность — хранение строкового типа данных и разные преобразования этих данных. А вот, мол, создание объекта такого класса с его функциональностью напрямую не связано…

И второй ваш класс со своей задачей справиться сам не может, т.е. делит свою ответственность с первым.

Может, но это ограничивается областью видимости.
Если уж описывать какие-то адекватные решения, то лучше говорить про STM, а не про такие финты ушами.

В чем финт-то? Это удобный механизм добавления посредника.

Проперти в плюсах я делал в бородатом 2004-м году будучи школьником.

Мне кажется, что так же гибко не реализовать.
А кто сказал, что мы не можем вмешиваться в его код, спроектировать его специальным образом, так, чтобы его нельзя было инстанцировать извне просто так, изначально?
А кто сказал, что шаблон «синглтон» не может быть реализован посредством фабрики?
Простите, но это уже глупо. Если вести речь не о своих исходниках, а о закрытых 3rd party, как вы вообще можете гарантировать, что там что-то происходит вот так, а не иначе? Это определенно невозможно — вы не знаете, что есть в черном ящике чужого кода.
Следовательно, это толкование - заведомо неверное.

Я использую общепринятое определение синглтона.

Вы в статье использовали не общепринятое, а свое понимание, сузив шаблон проектирования до класса.

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

Нет, конечно. Какая жирная демагогия. Тогда у вас, по вашей логике, любой класс, имеющий приватные поля и методы имеет в качестве дополнительной отетственность по контролю за доступом.
В данном контексте «голых практиков» — это и есть те, которые учили только профильную теорию. Прикладную, так сказать.
Да пусть хоть 99% ускорение.
В OS/2 мне больше всего понравилась эмуляция устройств внутри DOS сессии. Это была единственная из доступных ОС, которая эмулировала DOS вместе с графикой, последовательными портами, корректно все это поддерживая.
А при чем тут платное? Учись хорошо, попадешь на бюджет. Все затраты — ребенку на ботинки да еду.
Это нормально — голых практиков готовят колледжи и ПТУ. Инженер, придя зеленым на производство, учится несколько лет.
По-моему, нет, он говорил о своих исходниках, над которыми имеет контроль. Это вы пытаетесь задним числом добавить ограничений.
Я имею в виду — процессор один. Хоть сто программных таймеров на восьмое прерывание повесь — все равно только 1 будет работать за раз.
Это вопрос конкретного ЯП.
Публичный конструктор можно скрыть или запретить.
Еще как получится.
Говорить, что синглтон — это «класс, не допускающий создания более одного экземпляра»(себя) — ошибочно.
Синглтон — это шаблон проектирования, а не класс.
Если у вас есть класс (или даже просто процедурной парадигмы функция), который единственный допускает создание второго класса, и только единожды, то эта пара будет тоже синглтоном. И у каждого класса будет только одна задача.
Олимпиадная задачка для школьников, помню классе в 4-5 такое решали еще на Бейсике.
Нет, не может. Когда потом преподают хорошо, чувствуешь разницу.

Это точно.
Когда-то у нас пошла дискретка, и по учебнику она мне казалась скучной вещью. Поэтому ряд пар в начале, штуки 3-4, я пропустил, а потом пришел-таки.
И тогда впервые в жизни реально сильно пожалел, что пропустил — настолько замечательно преподаватель вел предмет.
Это Asynchronous I/O, overlapped и так далее получается. То, что сейчас и используют для уменьшения простоя при работе с IO.

Information

Rating
Does not participate
Registered
Activity