[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вопросы по паттернам
chubrick
только начал изучать паттерны и пока что-то не очень въезжаю в эту тему. Помогите разобраться. Сейчас изучаю по книге Мэтт Зандстра и если сразу непонятно, то копаю статьи в гугле.
Так вот, у меня сложилось такое мнение о паттернах:
1) синглтон - это для бд, настроек и т.д.
2) прототип - это когда начальная генерация объекта занимает время, а в процессе выполнения скрипта надо создавать много таких объектов, поэтому быстрее получается клонировать готовый объект и уже работать с ним.
3) фабрика метод - типа замена new (что-то не очень понял)
4) абстрактная фабрика - вообще не втыкаю
И вообще можно, например, синглтон запихнуть в фабрику? Ну чтобы его генерировать через нее
5)композиция - это когда я хочу складировать одно в другом и в третьем и т.д. и выполнять методы сразу над всеми объектам в этой группе
6)декоратор - для фильтров и кодировщиков и т.д.
7)фасад - типа точки перехода между элементами системы. Обеспечивает их взаимосвязь более простым интерфейсом
8)интерпритатор - ну тут всё ясно
9)стратегия - разделение "всего и побольше". Сочетается с фасадом (можно обеспечивать взаимосвязь компонентов через фасад)
10) наблюдатель - для всяких сообщений (а ля вк), логов и т. д.
Вот как-то так я всё это понял. Объясните пожалуйста где я не прав и про фабрики



Спустя 2 часа, 17 минут, 14 секунд (12.08.2012 - 13:09) Dezigo написал(а):
Вы описали паттерны в трёх словах.
Вам нужно знать ООП очень хорошо.(Что такое абстрактный класс,интерфейс,композиция).

Поэтому Вы и не понимаете что такое "абстрактная фабрика" и не видите разницу между обычной.

Вы особо не понимаете для чего нужны паттерны. При проектирования системы.В самом начали Вы выбираете подходящий для конкретной задача свой архитектурный подход.


Спустя 46 минут, 52 секунды (12.08.2012 - 13:56) chubrick написал(а):
Dezigo
абстрактный класс - это общий интерфейс в котором реализуется часть общей логики
интерфейс необходим для стандартизации группы классов
композиция - это использование или создание или хранение одних классов внутри других. Коллекции тоже композиция

Цитата
Вы описали паттерны в трёх словах.

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

Цитата
Вы особо не понимаете для чего нужны паттерны

я понял, что мне нужны паттерны, когда попытался написать сайт (сервис, систему) и запутался во всех классах пошло жуткое дублирование кода и др.

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

что-то я не понял, а как надо?

Спустя 9 часов, 49 минут, 3 секунды (12.08.2012 - 23:45) bodja написал(а):
chubrick

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

Спустя 8 часов, 56 минут, 31 секунда (13.08.2012 - 08:41) Dezigo написал(а):
Давай разделим это на принципы, чего нужно придерживаться.
  • Инкапсулируйте то, что изменяется.
  • Предпочитайте композицию наследованию.
  • Программируйте на уровне интерфейсов.
  • Стремитесь к слабой связанности взаимодействующих объектов.


Принцип проектирования:
Определите аспекты вашего приложения, которые могут изменятся, и отделите их от тех которые будут оставаться неизменными.
Программируйте на уровне интерфейсов, а не на уровне реализаций.


Вот если Вам не понятен какойто паттерн напишите тему, разберём wink.gif

Спустя 7 минут, 39 секунд (13.08.2012 - 08:49) Dezigo написал(а):
Цитата (bodja @ 12.08.2012 - 21:45)
chubrick

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

Если не использовать паттерны, то и смысла в использовании ООП нету.
Как бы получается так: Создал кучу классов, в них разные методы., а проектировать как? или все 100 методов в одном классе или разбить, ай работает ну и супер.

Конечно если с умом подойти и сделать свой паттерн, а потом найти его в похожих уже созданных вот за это я двумя руками за!. rolleyes.gif

Спустя 2 часа, 26 минут, 59 секунд (13.08.2012 - 11:16) Oyeme написал(а):
bodja
Вы сторонник анти-патернов.Не нужно советовать это другим.


chubrick
Пишите конкретно что Вам не понятно в каждом паттерне. wink.gif


Спустя 2 часа, 11 минут, 9 секунд (13.08.2012 - 13:27) bodja написал(а):
Цитата
Если не использовать паттерны, то и смысла в использовании ООП нету.

Баян.

Цитата
Как бы получается так: Создал кучу классов, в них разные методы., а проектировать как? или все 100 методов в одном классе или разбить, ай работает ну и супер.

Я тут не понял сути,класс пишется для создания обьектов,если обьекту нужны 100 методов -они там будут.

Цитата
Вы сторонник анти-патернов.Не нужно советовать это другим.

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

Спустя 4 часа, 40 минут, 25 секунд (13.08.2012 - 18:08) severogor написал(а):
Извините, конечно, что влезаю. По-моему вы говорите немного о разных вещах и с разных позиций.
Цитата
Нельзя научится читать рассматривая картинки в книге.

Нельзя научиться создавать серьезные приложения зная лишь программирование. Нужно знать еще и принципы построения архитектуры систем.

Спустя 2 часа, 3 минуты, 17 секунд (13.08.2012 - 20:11) bodja написал(а):
severogor
Не зная основ ,вообще никаких приложений не будет,хотя нет... будет.
Там взял либу ,там плагин ,там фреймфорк ,как то склеил,вышло х.з. скоко чего но зато как то работает,я как такое вижу меня аж плющит. biggrin.gif
Не ну в целом ,перенимать чужой опыт нужное и полезное занятие, biggrin.gif потом как то доходиш до сути.

Цитата
Нужно знать еще и принципы построения архитектуры систем.

В ООП есть три принципа,и это мое ИМХО ,не хотите не соглашайтесь
-возможность динамически создавать код (наследование)
-возможность динамически изменять код (полиморфизм)
-возможность коду быть независимым (инкапсуляция)
этого достаточно ,чтобы делать ,что угодно и как угодно,все остальное - это вариации с использованием этих же возможностей.

Спустя 1 час, 57 минут, 51 секунда (13.08.2012 - 22:09) Dezigo написал(а):
Цитата (bodja @ 13.08.2012 - 11:27)
Цитата
Если не использовать паттерны, то и смысла в использовании ООП нету.

Баян.

Цитата
Как бы получается так: Создал кучу классов, в них разные методы., а проектировать как? или все 100 методов в одном классе или разбить, ай работает ну и супер.

Я тут не понял сути,класс пишется для создания обьектов,если обьекту нужны 100 методов -они там будут.

Цитата
Вы сторонник анти-патернов.Не нужно советовать это другим.

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

Да именно так, иначе зачем класс?, интерфейс, абстрактный класс..,прототип, композиция,?
По вашему взгляду класс это набитый контейнер методами и свойствами. Работает ну и ладно.
Если что php даже тут не причём ООП относится ко всем языкам.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.