• Как понять/освоить паттерны проектирования?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Паттерны - это терминология для определенных наборов решений.

    Представьте, что вы решаете какую-то задачу. Ну например в игрушке программируете набор заклинаний, которые может сколдовать игрок.
    При этом составляете таблицу (или массив), в одном столбце - сколько маны тратит заклинание, в другом - каким классам оно доступно, в третьем - оно бьет по врагу, по другу или по площади, в четвертом - какое-то дополнительное условие, например заклинание может колдоваться только днем.
    Потом хотите усложнить, добавляете еще условие, например только во время грозы.
    Потом усложняете еще, что его может колдовать только если не голоден.
    Потом, через 10 новых заклинаний, которые вносят в вашу игру уникальность и разнообразие эффектов, вы понимаете, что в таблице у вас есть 10=15 столбцов, в которых true стоит только напротив одного заклинания, и вы думаете, как бы это все упростить.
    Да, можно перейти на биты, но это не меняет того, что вы храните список эффектов, проверка на который используется только один раз, а if/case у вас уже несколько страниц.

    Потом вы придумываете, что можно сделать столбец, в котором указывать не очередной параметр, а вызывать уникальную функцию, внутри которой можно проверять разные уникальные эффекты, и таблица снова сокращается до 5-6 столбцов. Решение - крайне удобное для вашего случая - вы можете легко придумать совершенно уникальные проверки условий, и их будет легко интегрировать.
    Вот, вы использовали паттерн executor.

    Это не конкретный код, и не язык, это просто вариант решения задачи, не всегда даже алгоритм, а сама идея.

    Собственно паттерны - это и есть варианты, идеи для решения каких-либо задач.
    Популярные паттерны могут быть хорошо и тщательно расписаны, с примерами кода.
    Более редкие могут иметь свое название в небольшом кругу программистов, и не всегда попасть в стандарты.

    Но зная как минимум популярные паттерны - вы просто сможете решать популярные задачи быстрее, использовать best practice, реже наступать на грабли и общаться с коллегами удобной терминологией, которая сократит время на объяснение.
    Ответ написан
    1 комментарий
  • Как понять/освоить паттерны проектирования?

    @Got_Oxidus
    Учусь
    Может я чайник, и программирование это не моё?

    Если вы добрались до этой темы, то программирование это ваше, просто подошли к проблеме не с той стороны)

    Паттерн - это шаблон, отношение классов, решающий определённую задачу.

    Почитайте Паттерны проектирования .NET. Большинство популярных паттернов подробно разобраны. (Подходят и для Java)
    Ответ написан
    1 комментарий
  • Как работать с семантическим ядром?

    dvguinf
    @dvguinf
    Веб-разработчик
    Книга "SEO оптимизация от А до Я" раздел" Семантическое ядро" даст ответы Вам на эти вопросы.
    Ответ написан
    Комментировать
  • Как работать с семантическим ядром?

    Anastasis223
    @Anastasis223
    Seo - это наше всё
    Парень,не ложи все яйца в одну корзину. Почитай проф.лит-ну,например от Ingate. СЯ,это СЯ, тэги это тэги и так далее.
    Ответ написан
    Комментировать
  • Как создать класс, инициализирующий неопределённое количество элементов массива в своём поле?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    Что-то мне подсказывает, что вам нужно реализовать итератор.

    Вот тут почитайте.

    Если нет, то опишите задачу подробнее. Тогда получите более точное решение

    Прочитать про get и set
    Ответ написан
    Комментировать
  • Как создать класс, инициализирующий неопределённое количество элементов массива в своём поле?

    ImmortalCAT
    @ImmortalCAT
    C# loving
    посмотри исходники класса List<> и интерфейса IList<>
    и узнаешь как работает лист
    спойлер - он работает с массивом
    Ответ написан
    Комментировать
  • Как работает lazy loading?

    effetto
    @effetto
    .Net разработчик
    Судя по вопросу, Вы имеете ввиду Entity Framework?

    По поводу lazy loading есть отличная статья Джулии Лерман от '11 года. Несмотря на то, что статья довольно старая, она актуальна.

    Здесь краткий пример использования технологии, а здесь - официальное описание.

    В общих чертах Lazy Loading работает через создание прокси классов над Вашим кодом, который обеспечивает вызов методов загрузки - cвоеобразная реализация dependency injection.

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

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

    Lazy loading можно непосредственно отключить в конструкторе контекста или указать непосредственную загрузку методом Include как писалось ранее.

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

    Обращение к сущностям происходи прозрачно, через оператор ".", как к свойствам объекта.
    Ответ написан
    3 комментария