Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
3 / 3 / 2
Регистрация: 05.01.2013
Сообщений: 264

Паттерн Утка или стратегия зачем вообще паттерны?

06.02.2016, 18:54. Показов 3674. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Начал ознакамливаться с ООП паттернами программирования, все, конечно, красиво, но разрастается все до кучи классов, файлов и тд. Конкретно посмотрел этот урок и подумал, что ведь по сути все это можно было реализовать и без интерфейсов наследования и прочих запутанных штук.
http://www.youtube.com/watch?v=qo7Hqwypwcc
Например
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class DuckBase
{
    public $fly;
    public $quack;
    
    function quack()
    {
        switch $this->Quack )
        {
            case "Quack":
                echo "Quack";
                break;
            case "Mew":
                echo "Mew";
                break;
            default:
                break;
        }
    }
    
    function quack() { ...  аналогично quack }
    
    function setquack( $quack = "Quack|Meow|..." )
    {
        $this->quack = $quack;
    } 
}
Суть ведь та же, разве что все собрано в одном месте, но зато экономия кода и все наглядно. Какие могут быть подводные камни у подобной реализации, в отличие от реализации через интерфейсы наследование и прочее?
При необходимости можно ведь не echo ""; писать в switch а просто метод, который можно реализовать отдельно.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.02.2016, 18:54
Ответы с готовыми решениями:

Паттерн "Стратегия". Зачем нужен контекст
Здравствуйте, у меня вопрос про паттерн "Стратегия". Я понимаю что он используется для инкапсулирования алгоритмов. Выбирая нужный нам...

Паттерны Стратегия и Делегат
Доброго времени суток! Правильно ли я понимаю, что паттерны Стратегия и Делегат это одно и тоже ?

Паттерн стратегия
Всем привет! Начал изучать паттерны. Одним из наиболее понятных и интересных мне оказался паттерн Стратегия. Я начитался статей и...

12
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
06.02.2016, 19:07
зачем вообще паттерны?
Паттерны - накопленный опыт множества программистов для решения стандартных задач.
Цитата Сообщение от PhpNewbie Посмотреть сообщение
Конкретно посмотрел этот урок
Не надо смотреть сомнительного качества уроки.
0
3 / 3 / 2
Регистрация: 05.01.2013
Сообщений: 264
06.02.2016, 19:27  [ТС]
Jewbacabra,
Автор вроде бы объясняет суть базовых паттернов. Его канал - первое, что выдает ютуб по запросу "шаблоны программирования". Читать лень, хотел посмотреть видео. Если есть более адекватные объяснения паттернов в виде видео, буду благодарен.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
06.02.2016, 19:41
Цитата Сообщение от PhpNewbie Посмотреть сообщение
Автор вроде бы объясняет суть базовых паттернов.
"вроде бы" здесь ключевое слово.
Цитата Сообщение от PhpNewbie Посмотреть сообщение
Читать лень, хотел посмотреть видео.
С таким подходом придется забыть о программировании.
0
3 / 3 / 2
Регистрация: 05.01.2013
Сообщений: 264
06.02.2016, 20:06  [ТС]
"вроде бы" здесь ключевое слово.
Чем конкретно плохи представленные видео?
С таким подходом придется забыть о программировании.
Речь, замечу, про конкретные ООП паттерны, а не про программирование в целом. Я про то, что как по мне то как раз всякие абстракции удобнее с видео воспринимать. А доки читать это отдельный разговор.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
06.02.2016, 20:17
Цитата Сообщение от PhpNewbie Посмотреть сообщение
Чем конкретно плохи представленные видео?
Как минимум тем, что появился данный вопрос. Следовательно автор не объяснил для чего нужен данный паттерн.
Цитата Сообщение от PhpNewbie Посмотреть сообщение
что как по мне то как раз всякие абстракции удобнее с видео воспринимать
И как результат? Именно он важен, а не способ его получения.
И любовь к видео урокам я могу объяснить одним словом:
Цитата Сообщение от PhpNewbie Посмотреть сообщение
лень
А лень хороша только для лежания на диване.
0
3 / 3 / 2
Регистрация: 05.01.2013
Сообщений: 264
06.02.2016, 20:45  [ТС]
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Как минимум тем, что появился данный вопрос. Следовательно автор не объяснил для чего нужен данный паттерн.
Возможно. Могу сделать вывод, что паттерны программирования в принципе ненужная вещь одинокому разработчику. Вот если программист работает над крупным проектом, который делает не он один, тогда паттерны полезны, но там, как правило, более скиловые кодеры пишут все эти паттерны, поэтому можно учиться прямо на лету и на реальных примерах, а не абстрактных рассуждениях, которые слабо помогают понять суть того или иного паттерна.
Лучше API какого-нибудь движка или фреймворка почитать - пользы больше будет.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
06.02.2016, 20:50
Цитата Сообщение от PhpNewbie Посмотреть сообщение
Могу сделать вывод, что паттерны программирования в принципе ненужная вещь одинокому разработчику
Проект у которого 1 разработчик вполне может в один прекрасный день превратиться в проект с 10 разработчиками.
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
09.02.2016, 09:51
Цитата Сообщение от PhpNewbie Посмотреть сообщение
Могу сделать вывод, что паттерны программирования в принципе ненужная вещь одинокому разработчику
Серьезно? Т.е. по вашему даже MVC не нужен? Вы из тех кто пишет весь код в одном файле?)
Цитата Сообщение от PhpNewbie Посмотреть сообщение
но там, как правило, более скиловые кодеры пишут все эти паттерны
Кодеры? возможно. А программисты не изобретают велосипеды где не надо.
Цитата Сообщение от PhpNewbie Посмотреть сообщение
Лучше API какого-нибудь движка или фреймворка почитать - пользы больше будет.
Ок, посмотрите документацию Laravel. Очень интересно как вы разберетесь в его архитектуре не зная паттернов, на которых он основан. Например: mvc, ioc, di, фасады, синглтоны...
Цитата Сообщение от PhpNewbie Посмотреть сообщение
поэтому можно учиться прямо на лету и на реальных примерах,
Дак учитесь. Даже в том видео, которые вы представили, говорится о закреплении на практики.

Есть еще один нюанс. Паттерны надо изучать, чтобы знать где их лучше применять. Не будет такого, чтобы вы вдруг догадались о необходимости применения паттерна X, и только потом пошли изучать его. Конечно вам могут подсказать, но это уже не уровень программиста, а просто кодера, который особо то и не цениться.
0
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
09.02.2016, 11:33
PhpNewbie
Вы делаете обобщённые выводы, опираясь на один конкретный пример.
Подобное очень часто происходит. Вам предъявляют программу, которая разрешает тройку https://www.cyberforum.ru/cgi-bin/latex.cgi?<\varphi \mid I \mid \psi >, предусловия, инварианты, постусловия. Тройка разрешается крайне просто, причём без всяких стратегий её реализовать можно даже короче. Учитывая, что технология ООП для Вас новая, а технология процедурных вычислений хорошо известна -- Вы можете реализовать https://www.cyberforum.ru/cgi-bin/latex.cgi?<\varphi \mid I \mid \psi > в процедурном стиле гораздо яснее для себя и для окружающих. И сразу заявляете, что шаблоны проектирования не нужны!

Но это работает только для конкретной тройки. Если придётся, скажем, изменить некоторые требования к поведению и возникнет новая тройка https://www.cyberforum.ru/cgi-bin/latex.cgi?<\varphi \mid I' \mid \psi >, то без использования паттернов нужно будет перепроектировать вашу программу, а с использованием паттернов -- внести некоторые, локальные изменения.

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

Как только в своих проектах, где предметная область достаточно богатая, Вы начнёте применять те методы, которым научились на "кошках", "собаках" и "утках", тогда и почувствуете разницу.
1
3 / 3 / 2
Регистрация: 05.01.2013
Сообщений: 264
09.02.2016, 17:56  [ТС]
Цитата Сообщение от tarasalk Посмотреть сообщение
Серьезно? Т.е. по вашему даже MVC не нужен? Вы из тех кто пишет весь код в одном файле?)
Не, речь про конкретные паттерны, я все mvc не отвергаю, хотя и понимаю его на уровне нуба, поэтому код кривенький. Просто иногда удобней и быстрей написать все через switch или условия, чем разбивать код на кучу подклассов.
Цитата Сообщение от tarasalk Посмотреть сообщение
Ок, посмотрите документацию Laravel. Очень интересно как вы разберетесь в его архитектуре не зная паттернов, на которых он основан. Например: mvc, ioc, di, фасады, синглтоны...
Ну вот, походу, лучше так и делать. Потому что примеры с "утками" на меня как-то не очень действуют.
Цитата Сообщение от tarasalk Посмотреть сообщение
Дак учитесь. Даже в том видео, которые вы представили, говорится о закреплении на практики.
Да, только примеры дурацкие про уточек. Я ж тему создал, потому что не понял, когда их на практике можно применять.
В любом случае, нужно забить на всю эту теоретическую фигню и просто изучать чужой код, будет гораздо полезней.
0
 Аватар для HOMEP13
1 / 1 / 5
Регистрация: 10.02.2016
Сообщений: 30
10.02.2016, 10:44
Когда задают вопрос "зачем паттерны", значит время еще не пришло. Кроме того, знание паттернов без отсутствия опыта, только мешают, когда где надо и не надо, пытаешься их применить.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
10.02.2016, 13:03
Цитата Сообщение от PhpNewbie Посмотреть сообщение
Просто иногда удобней и быстрей написать все через switch или условия, чем разбивать код на кучу подклассов.
А кто Вам говорил что нужно использовать паттерны для создания скрипта, в котором можно обойтись одним switch-условием? Они используются для крупных проектов.
Цитата Сообщение от PhpNewbie Посмотреть сообщение
Да, только примеры дурацкие про уточек. Я ж тему создал, потому что не понял, когда их на практике можно применять.
Этих уточек Вам показали чтобы Вы поняли как это работает. Если Вам начнут объяснять принципы паттернов на крупных проектах, это видео затянется на месяц и Вы ничего не поймете.

Представьте, Вас учат водить машину, начинают с того какие там педали нужно нажимать, а Вы отвечаете - "да зачем мне эти педали, покажите мне как тут дрифтовать!". Тут сейчас Вашы посты выглядят также.

Цитата Сообщение от PhpNewbie Посмотреть сообщение
В любом случае, нужно забить на всю эту теоретическую фигню и просто изучать чужой код, будет гораздо полезней.
Даже не так. В первую степень нужно писать что-то свое. Постоянно писать. Вот когда уже не понятно - смотреть как это делают другие.

Когда нужно применять паттерны Вы со временем сами поймете. Просто пишите код.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.02.2016, 13:03
Помогаю со студенческими работами здесь

Паттерн стратегия
Всем привет. Решил разобраться с паттерном стратегия, прочитал несколько статей и сделал по их примеру код. Код рабочий. Просто хочу...

Паттерн Стратегия на примере сортировки
Всем привет! Видел множество примеров по паттерну Стратегия, но не встречал пример со сортировкой, может у кого-нибудь есть реализованный...

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

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

Сделать выбор персонажа игры, вывод его скилов и предметов, используя паттерн стратегия
В лабе надо было сделать выбор персонажа игры,вывод его скилов и предметов,используя паттерн стратегия.В VS программа вроде...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru