Войти
ФлеймФорумРазработка игр

Паттерно-служители welcome to the hell (8 стр)

Страницы: 17 8 9 1016 Следующая »
#105
20:09, 13 июня 2021

Delfigamer
> Да чё уж мелочиться, давай сразу #define private public, тогда всё что угодно
> можно будет в обход чего угодно.

выше я привел вот такой пример:

// forward declaration + геттер:

struct some* getInstance();

теперь давай, покажи, как ты сможешь:
"всё что угодно, в обход чего угодно"

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

#106
20:27, 13 июня 2021

Kartonagnick
> любой синглетон предоставляет гарантию.
Хорошо, пусть так. Но и приведенная выше реализация синглтона тоже гарантирует, что при вызове ф-ии будет возвращен указатель на единственный объект.

> уже не в первый раз сталкиваюсь с подобным бредом.
> и откуда вы только понахватались этой дурости?
Тут книгу умную предлагали, в ней так написано

Назначение
Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему
глобальную точку доступа

> вместо этого можно заюзать указатель,
> через которой можно сразу получить доступ к данным ресурса.
Можно, но это уже будет не хэндл, а указатель на данные.

> технически, "хэндл" - это паттерн,
> который позволяет реализовать инкапсуляцию на убогих, и ущербных языках,
> которые из коробки её не поддерживают.
> например: на языке си.
Но в языке си нет инкапсуляции и сокрытия данных т.к. это процедурный язык o_O

> чем сингелтон неизбежно должен иметь принципиальные отличия
> от глобальной переменной.
Ну наверное тем, что синглтон - это порождающий паттерн, а глобальная переменная - переменная.

#107
20:39, 13 июня 2021

Kartonagnick
> // forward declaration + геттер:
>
> struct some* getInstance();
Ты серьезно? А если не дай б-г в коде заведется несколько разных struct some, какие твой синглтон предоставит гарантии в этом случае?

#108
20:42, 13 июня 2021

totoro
> Назначение
> Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему
> глобальную точку доступа
  И где здесь написано, что именно второе свойство - основное, а не первое?

> Но в языке си нет инкапсуляции и сокрытия данных т.к. это процедурный язык o_O
  Тут недавно была тема про то, что лежит в структуре FILE. Оказывается подавляющее большинство программистов этого не знает и думает, что это просто хэндл. Вот это и есть инкапсуляция по-сишному: когда тебе не надо знать что лежит в структуре, а ты просто вызываешь функции, которые с ней работают. При таком подходе пользовательскому коду даже не обязательно знать как она определена.

#109
20:48, 13 июня 2021

Zefick
> И где здесь написано, что именно второе свойство - основное, а не первое?
Где тут два? Вижу одно основное свойство - предоставление глобальной точки доступа к единственному экземпляру.

> Оказывается подавляющее большинство программистов этого не знает и думает, что
> это просто хэндл.
Это и есть хэндл, просто он завернут в структуру.

> Вот это и есть инкапсуляция по-сишному: когда тебе не надо знать что лежит в
> структуре, а ты просто вызываешь функции, которые с ней работают.
Нету в си никакой инкапсуляции, я могу залезть во внутренние поля структуры и сделать с данными все что угодно, например перенаправиить вывод в другой файл.

#110
21:04, 13 июня 2021

totoro
> Ты серьезно?
ты это так спросил,
как будто бы так нихера и не понял про хэндлы.

totoro
> А если не дай б-г в коде заведется несколько разных struct some, какие твой
> синглтон предоставит гарантии в этом случае?

в этом случае гарантии будут точно такими же.

+ Показать
#111
21:04, 13 июня 2021

totoro
> Где тут два? Вижу одно основное свойство - предоставление глобальной точки
> доступа к единственному экземпляру.

синглетон не обязан быть глобальным.

#112
21:06, 13 июня 2021

totoro
> Нету в си никакой инкапсуляции, я могу залезть во внутренние поля структуры и
> сделать с данными все что угодно, например перенаправиить вывод в другой файл.

в своём примере ты привел ссылку на публичное API.
и это ты называешь "залезть во внутренние поля" ?

#113
21:19, 13 июня 2021

totoro
> Хорошо, пусть так. Но и приведенная выше реализация синглтона тоже гарантирует,
> что при вызове ф-ии будет возвращен указатель на единственный объект.
почитай что такое "синглетон".

totoro
> в ней так написано
в ней допущена неточность.
синглетон не обязан быть глобальным.

но кстати, вот ты прочитал.
осознал что такое "синглетон"
и ты понял, что выше-приведенный тобою говнокод
никакого отношения к синглетонам не имеет?

вот объясни мне,
как ты можешь называть "приведенной выше реализацией синглетона" конструкцию,
которая вообще не имеет никакого отношения к,
собственно, синглетонам?

а то может тебе ещё раз нужно почитать.
ты походу не понял, чем синглетон отличается от не_синглетона.

totoro
> Можно, но это уже будет не хэндл, а указатель на данные.
технически, "хэндл" - это и есть указатель на данные.
(не обязательно, но как правило)

totoro
> Но в языке си нет инкапсуляции и сокрытия данных т.к. это процедурный язык o_O
это уже запредельная тупость.
даже не стану предлагать тебе #112

totoro
> Ну наверное тем, что синглтон - это порождающий паттерн, а глобальная
> переменная - переменная.

ты сам то хоть понял, что за чушь написал?

#114
21:28, 13 июня 2021

totoro
> Это и есть хэндл, просто он завернут в структуру.
  Чего-чего?

> Нету в си никакой инкапсуляции, я могу залезть во внутренние поля структуры и
> сделать с данными все что угодно, например перенаправиить вывод в другой файл.
  Ты это практически в любом языке можешь сделать. В питоне все поля объекта публичные и их можно менять как угодно, в Java есть рефлексия, которая позволяет делать что угодно даже с приватными полями. В С++ никто не мешает сделать каст указателя на объект в char* и спокойно по нему гулять. Но это не значит, что там нет инкапсуляции, так что не придымувай ерунду.

#115
22:11, 13 июня 2021

Kartonagnick
> как ты можешь называть "приведенной выше реализацией синглетона" конструкцию,
> которая вообще не имеет никакого отношения к,
> собственно, синглетонам?
По каким критериям эта конструкция не имеет отношения к синглтону?

> даже не стану предлагать тебе #112
Ты в 112 предлагаешь реализацию на языке Си, и говоришь что нарушение ODR влечет за собой UB.
Зачем ты предлагаешь такую реализацию, которая нарушает ODR?

> технически, "хэндл" - это и есть указатель на данные.
То есть вот это указатель на данные?

typedef void* HANDLE;

> totoro
> > в ней так написано
> в ней допущена неточность.
+
> ты сам то хоть понял, что за чушь написал?
Книгу GoF ты, судя по всему, не читал, но осуждаешь.

#116
22:13, 13 июня 2021

Zefick
> Чего-чего?
Внутри структуры файловый дескриптор спрятан.

> В С++ никто не мешает сделать каст указателя на объект в char* и спокойно по
> нему гулять.
Такую дичь можно только под веществами замутить.

#117
23:02, 13 июня 2021

totoro
> Внутри структуры файловый дескриптор спрятан.
  Нет, лол. Точнее конечто какой-то дескриптор там есть чисто для системы, но кроме него там есть ещё куча всего. Внутри спрятаны всякие буферы, смещения, флаги и прочая хрень. Это не только один хэндл. Но даже если бы это был хэндл, то это тоже инкапсуляция, так что я не понимаю зачем ты про них начал говорить, не зная точно предмета разговора.

> Такую дичь можно только под веществами замутить.
  Но это то же самое что и лезть в структуру и что-то там менять в Си когда для этого есть специальные функции. Ещё что-нибудь придумаешь?

#118
23:06, 13 июня 2021

Ребята, подскажите что Вы "курите", чтобы с таким упорством сраться в топике забывая суть программиста (которых нет) и программинга как такового (которого тоже не бывает :)
ибо, всё что дано нам или привито, это в ощущениях.

P.S. Может имеет смысл, кому нибудь из Вас, в "религиозном" экстазе, запилить какую то статью по волнующей Вас тематике (предположу, что не женщин) например на площадку habra или pikaby? :)

#119
23:15, 13 июня 2021

KPG
> Ребята, подскажите что Вы "курите", чтобы с таким упорством сраться в топике забывая суть программиста
Да, тут собрались "чистые IT-шники". "Программисты всего", следовательно, "программисты ничего".

#119
23:15, 13 июня 2021

Zefick
> Внутри структуры впрятаны всякие буферы, смещения, флаги и прочая хрень.
Нет не так. Там внутри спрятан хэндл, ну и всякие буферы, смещения, флаги и прочая хрень. Теперь так.

> Но даже если бы это был хэндл, то это тоже инкапсуляция
Хэндл можно заменить на другой, и это есть нарушение инкапсуляции.

> я не понимаю зачем ты про них начал говорить, не зная точно предмета разговора.
Вот и мне непонятно, зачем говорить про файловый ввод-вывод, если толком не понимаешь как он работает? Файл - это ресурс ОС, и никакого другого способа получить к нему доступ из юзерспейса, кроме как через хэндл, просто не существует.

> Но это то же самое что и лезть в структуру и что-то там менять в Си когда для
> этого есть специальные функции.
В си нет механизмов, которые запрещают залезть в структуру и что-то там поменять, для этого даже ничего изобретать не нужно - просто берешь и меняешь.

Страницы: 17 8 9 1016 Следующая »
ФлеймФорумРазработка игр

Тема в архиве.