|
Заблокирован
|
|||||||||||
Паттерны проектирования языкозависимы28.02.2017, 18:58. Показов 4366. Ответов 59
Есть мнение, что паттерны проектирования бесполезно изучать по заумным мейнстримным книжкам, как минимум, по двум причинам.
Во первых, разгребание кучи кода, специфичного для какого то убогонького язычка отвлекает от сути, и приводит к лишней трате времени. К примеру, эквивалент примера паттерна "Прокси" с википедии на Io в 2 строки
Вот паттерн Observer
Вот тут есть кое-что об этом от Питера Норвига. http://norvig.com/design-patte... tterns.pdf Так что, следует 10 раз подумать, прежде чем лезть на амбразуру, а надо ли оно?
0
|
|||||||||||
| 28.02.2017, 18:58 | |
|
Ответы с готовыми решениями:
59
Актуальны ли паттерны проектирования Паттерны (шаблоны) проектирования Где взять Паттерны проектирования? |
|
Заблокирован
|
|
| 02.03.2017, 10:54 | |
|
0
|
|
|
14789 / 9562 / 1367
Регистрация: 21.01.2016
Сообщений: 36,058
|
||
| 02.03.2017, 10:55 | ||
|
0
|
||
|
Заблокирован
|
|||
| 02.03.2017, 10:58 | |||
|
Добавлено через 1 минуту
0
|
|||
|
14789 / 9562 / 1367
Регистрация: 21.01.2016
Сообщений: 36,058
|
|||
| 02.03.2017, 11:14 | |||
return target[message] пробрасывает свойство target, но может и другое что-то прокидывать. Или просто делать дополнительную работу превращаясь в декоратор.
0
|
|||
|
Заблокирован
|
|
| 02.03.2017, 12:07 | |
|
0
|
|
|
14789 / 9562 / 1367
Регистрация: 21.01.2016
Сообщений: 36,058
|
|
| 02.03.2017, 12:21 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 02.03.2017, 12:25 | |
|
0
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||||||||||||||||
| 02.03.2017, 16:34 | ||||||||||||||||
|
Надеюсь, уже никто не сомневается в том, что пример кода из стартового сообщения
код на IO
ТС считает, что это супер крутой код, который нельзя написать на большинстве других языков. И поэтому IO такой крутой. Это заблуждение. Такой код можно написать на большинстве языков. Например, вот аналог этого кода на C#:
А вот что существенно, так это то, что так мало кто пишет. Этот код обладает рядом недостатков, по сравнению с "тупым хардкором" через интерфейсы, и в большинстве случаев эти недостатки перевешивают его достоинства. Итак, на "убогоньком" C# можно писать так, как на крутом Io. У меня встречный вопрос: а можно ли на крутом Io написать то, что легко пишется на C#? Возьмём простейший пример: решение системы линейных уравнений Ax = b в целых числах. Пусть матрица размером 300 на 300, все числа целые и умещаются в 32 бита со знаком. Вопрос: может ли ТС написать на Io программу которая будет работать медленнее той, что я напишу на C#, не более чем в 100 раз? (требуется найти точное решение).
2
|
||||||||||||||||
|
Заблокирован
|
||
| 02.03.2017, 19:33 | ||
|
Shamil1,
Ваш пример -- убогая, смешная и нелепая пародия. Например, мой target не обязан быть экземпляром Math, а Вы его захардкорили в класс. Во вторых, мой класс произвольно расширяем, а Ваш нет. В третьих, у Вас Add захардкорен, что является вообще сущей клоунадой, и напрочь перечеркивает идею. Есть еще куча всего, но я на этот детский пример отвлекаться не хочу. Жду от Вас тот прокси, который я озвучил, этот вопрос Вы почему-то очень тщательно обходите стороной. Добавлено через 3 минуты
0
|
||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||||
| 02.03.2017, 20:20 | ||||
|
0
|
||||
|
Заблокирован
|
|||||
| 02.03.2017, 20:55 | |||||
|
Добавлено через 3 минуты
0
|
|||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||
| 02.03.2017, 21:15 | ||
|
Если Вы пишите программу для сложения двух целых чисел, Вы считаете разумным делать так, чтобы она могла выполнять любую операцию для любого количества любых чисел, даже если при этом она станет работать в 100 раз медленнее? Все Ваши оценки из предыдущего сообщения - это лишь Ваше субъективное и совсем не авторитетное мнение. Какими объективными критериями Вы пользуетесь, когда делаете вывод, что один код лучше другого?
0
|
||
|
Заблокирован
|
|
| 02.03.2017, 21:39 | |
|
0
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||
| 02.03.2017, 22:00 | ||
|
Вот у меня на компьютере есть программа Калькулятор. Она не умеет воспроизводить файлы с видео. Это хорошо или плохо? По-моему, это хорошо. Для воспроизведения видео потребовались бы дополнительные кнопки, которые бы мешали выполнению основной функции - производить операции с числами. Если моя программа на что-то не способна, то это потому, что это и не требовалось. Любая задача из тех, что способны решать современные программы, является частным случаем другой, более общей задачи. Поэтому любая существующая программа реализует частный случай. И моя тоже.
1
|
||
|
Заблокирован
|
|
| 02.03.2017, 22:41 | |
|
Shamil1, если Вам не по нраву обобщения, то лучше не использовать ООП. Есть другие языки для описания частных случаев.
0
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|
| 02.03.2017, 23:05 | |
|
Обобщение не достаётся бесплатно. За него приходится расплачиваться эффективностью (написания, работы, сопровождения). Поэтому "более обще" не значит "лучше". Любая программа - это баланс между обобщением и конкретизацией.
0
|
|
|
Заблокирован
|
||
| 02.03.2017, 23:11 | ||
|
0
|
||
|
14789 / 9562 / 1367
Регистрация: 21.01.2016
Сообщений: 36,058
|
||
| 03.03.2017, 06:21 | ||
|
Вы, как я уже отмечал выше, похоже смутно себе представляете для чего прокси нужен. Прокси, который просто пробрасывает (делегирует) управление внутреннему объекту, доступному тут же (а не удалённо) - это не прокси, это бесполезный оверхед. Прокси либо должен дополнительную работу совершать (декоратор), либо делегировать запросы объекту с отложенной инициализацией (суррогат), либо перенаправлять куда в неожиданное для потребителя место (собственно, прокси). Пример Shamil1 как раз и демонстрирует возможность перехвата вызова метода ADD (полезная работа, ради которой всё и задумывалось) с так желанной вами возможностью не прописывать "делегирование" для каждого метода за счёт использования рефлексии. И негодование по поводу "захардкоженности" мне непонятно. Данный прокси делался с одной целью - проксировать Math. Что он и делает. Какое обобщение тут нужно? Или речь о том, чтобы в каждом месте, где нужно создавать прокси для конкретной цели, всецело и полностью описывать требуемый функционал? Тогда это уже чистой воды говнокод выходит, но никак не "гибкость".
0
|
||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|||||||||||||||||||||||
| 03.03.2017, 14:27 | |||||||||||||||||||||||
|
Вы же не собираетесь сохранять эти две строки в отдельный модуль, сохранять в специальной папке и использовать в разных модулях. Если Вам где-то ещё понадобится такая же функциональность, проще будет заново вбить эти две строки, а не подключать другой модуль (файл) с этими строками. Поэтому я не вижу причин, по которым код
Далее. В коде вероятно
Добавлено через 32 минуты И ещё больше непонятно то, что ТС связывает эту захардкоженность с используемым языком. Конечно, ТС может не согласиться с моими соображениями, изложенными сообщении выше, с него станется. Но настаивать на том, что они связаны с использованием C#, - это уже откровенное передёргивание, вызванное предвзятостью. У ТС есть готовый ответ, и все факты трактуются с точки зрения это ответа, либо отбрасываются, если совсем не подходят.
0
|
|||||||||||||||||||||||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
|
| 03.03.2017, 21:39 | |
|
oopguru, я тут случайно нашёл для тебя отличное место для самовыражения. Там как раз обсуждают то, что ты любишь — акторы.
2
|
|
| 03.03.2017, 21:39 | |
|
Паттерны проектирования Паттерны проектирования
Паттерны проектирования (Фабрики) Паттерны(шаблоны проектирования) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|