Это внезапное появление Bank меня подвыбило из колеи. Минут 10 разбирался откуда оно. Вроде бы нашел его в видео "Паттерн Фасад в C# в Unity. Рассказываю на примерах в Unity3d, как пользоваться". А так Уроки вроде топ.
Так же дошел до этого места и сел в калошу. Сделал Bank вроде бы как в видео "Паттерн Фасад в C# в Unity, но теперь Unity при запуске проекта выдает ошибку из-за того что в экземпляре объекта не задана ссылка на объект и я не пойму где разрыв происходит...
В классе Bank в методе Initialize вероятно перед методом Invoke() пропущен оператор безопасного вызова "?" OnBankInitializedEvent?.Invoke(); public static void Initialize(BankInteractor interactor) { bankInteractor = interactor; isInitialized = true; OnBankInitializedEvent?.Invoke(); } @@ВячеславЗагородниченко
С корутиной в старте нормальный фокус))) Я сейчас сижу и думаю, а может скрипт который у меня отвечает за единую точку входа в игру переписать так же на корутину. Получится что то в виде последовательной цепочки операций, которую можем с легкостью менять. Автору спасибо за видео! Я конечно многое из этого уже знал, но подчеркнул для себя много полезной инфы, по поводу архетиктуры кода ;)
Выглядит очень интересно, увидеть бы применение на практике, дабы нубасу вроде меня стало понятнее как все это правильно применять на реальном проекте.
Как-то в уроке про архитектуру слишком много ненужного копипаста и статики... Хотя казалось бы, делается это все для ровно противоположного результата)
не совсем понимаю как это работает. Сделал как у тебя в видео и вылезает теперь ошибка на repository.OnCreate() и repository.OnStart() а если добавляю в Repository эти методы, то вообще не инициализируется банк и выбрасывает своё эксцепшн.
Про ссылки на предыдущие уроки спасибо - сделал. Согласен, не хватает картинки. Она есть в гитхабе, но там уже готовая архитектура (ссылка в описании). Я подумаю, как можно показать то, что мы уже сделали.
@@gamedevlavka Еще не хватает урока с Фасадом для цельности картины. Вообще это вроде разные вещи и верно что они отделены, но они выполняются в рамках одного проекта и возможно стоит его добавить в плейлист архитектуры. Или лучше ссылку на него указать, коли упоминаешь его в видео. Сейчас его найти не сложно, но в будущем будет больше видео и искать его будет тяжеловато. Да и вообще лучше не смешивать разные темы в одном проекте. Создается путаница. Мне так кажется. P.S. То, что ты делаешь очень круто. Крайне полезный и качественный материал. Давно искал нечто подобное. Прими мои благодарности)
А почему мы запускаем repositoriesBase.SendOnCreateAllRepositories(); interactorsBase.SendOnCreateAllInteractors(); сразу после repositoriesBase.CreateAllRepositories(); interactorsBase.CreateAllIneractors(); без всяких проверок? Где гарантия что создание Всех репозиториев и интеракторов уже произошло?
ZenJect - эт прокидывание ссылок при создании объектов, то есть на этапе создания объекта мне нужно иметь ссылку на объект, то есть где-то его взять. В крупных проектах это может стать неудобным, и, как мне кажется, мой подход удобнее. Но опять же, это просто два похожих подхода к архитектуре, выбирай какой хочешь)
Я сперва не понял почему вместо Dict, ты используешь Map, смысл не меняется, а Dict всё-таки всеми одинаково понятен. Но быстро понял, что InteractorDict можно смело ставить в один ряд с неймингом типа NameString, IsFlagBool, AmountInt, UnitList и т.д. 👍 Вот только смысл не меняется 😂.
namespace Lessons.Architecture { public abstract class Repository { public virtual void OnCreate() { } public virtual void OnStart() { } public abstract void Initialize(); public abstract void Save(); } }
Что-то мне кажется попахивает плохим кодом и дубляжом так как можно было создать вспомогательный класс на репозиторий и интерактор а не копипастить код... Это же ООП тут дубляж не приветсвуют тем более в таких масштабах что целые блоки кода...
Спасибо большое за серию уроков по архитектуре, учитель вы наш)
Это внезапное появление Bank меня подвыбило из колеи. Минут 10 разбирался откуда оно. Вроде бы нашел его в видео "Паттерн Фасад в C# в Unity. Рассказываю на примерах в Unity3d, как пользоваться". А так Уроки вроде топ.
Виноват, каюсь
Так же дошел до этого места и сел в калошу. Сделал Bank вроде бы как в видео "Паттерн Фасад в C# в Unity, но теперь Unity при запуске проекта выдает ошибку из-за того что в экземпляре объекта не задана ссылка на объект и я не пойму где разрыв происходит...
В классе Bank в методе Initialize вероятно перед методом Invoke() пропущен оператор безопасного вызова "?"
OnBankInitializedEvent?.Invoke();
public static void Initialize(BankInteractor interactor) {
bankInteractor = interactor;
isInitialized = true;
OnBankInitializedEvent?.Invoke();
}
@@ВячеславЗагородниченко
Большое спасибо, автор!
Спасибо за твои видео, очень помогают.♡♡♡
С корутиной в старте нормальный фокус)))
Я сейчас сижу и думаю, а может скрипт который у меня отвечает за единую точку входа в игру переписать так же на корутину. Получится что то в виде последовательной цепочки операций, которую можем с легкостью менять.
Автору спасибо за видео!
Я конечно многое из этого уже знал, но подчеркнул для себя много полезной инфы, по поводу архетиктуры кода ;)
5:48 new() ограничивает класс T, тем чтобы он имел публичный конструктор без параметров.
Спасибо за видео.
Добавьте видео про паттерн Фасад в плейлист по архитектуре, а то возникает много вопросов откуда взялся класс Bank
Выглядит очень интересно, увидеть бы применение на практике, дабы нубасу вроде меня стало понятнее как все это правильно применять на реальном проекте.
Дойдем и до этого) все станет еще понятнее в следующих видео!
Как-то в уроке про архитектуру слишком много ненужного копипаста и статики...
Хотя казалось бы, делается это все для ровно противоположного результата)
зачем нужен OnStart() в Итеракторе и Репозитории?
не совсем понимаю как это работает. Сделал как у тебя в видео и вылезает теперь ошибка на repository.OnCreate() и repository.OnStart() а если добавляю в Repository эти методы, то вообще не инициализируется банк и выбрасывает своё эксцепшн.
Прошёл первый урок, далее второй урок 10:39 Ошибка на repository.OnCreate() и repository.OnStart() хотя всё 1 в 1 сделал...
У меня такая же фигня. потому и полез читать коменты
я бы предпочёл иметь общую базу пар репозиторий+интерактор вместо дубляжа кода и прокидывания туда-сюда.
Спасибо за урок ! Может быть приставка Base не удачное -так как базовые классы обычно так называют. Как пример Storage или All в начале имени класса ?
Или вообще RepositoryManager/InteractorManager
Добавьте ссылку на предыдущий урок. Не хватает картинки с классами и их зависимостями, наверно.
Про ссылки на предыдущие уроки спасибо - сделал. Согласен, не хватает картинки. Она есть в гитхабе, но там уже готовая архитектура (ссылка в описании). Я подумаю, как можно показать то, что мы уже сделали.
@@gamedevlavka Еще не хватает урока с Фасадом для цельности картины. Вообще это вроде разные вещи и верно что они отделены, но они выполняются в рамках одного проекта и возможно стоит его добавить в плейлист архитектуры. Или лучше ссылку на него указать, коли упоминаешь его в видео. Сейчас его найти не сложно, но в будущем будет больше видео и искать его будет тяжеловато.
Да и вообще лучше не смешивать разные темы в одном проекте. Создается путаница. Мне так кажется.
P.S. То, что ты делаешь очень круто. Крайне полезный и качественный материал. Давно искал нечто подобное. Прими мои благодарности)
для тех кто не понял откуда bank ruclips.net/video/QrURtVSlDSM/видео.html
А почему мы запускаем
repositoriesBase.SendOnCreateAllRepositories();
interactorsBase.SendOnCreateAllInteractors();
сразу после
repositoriesBase.CreateAllRepositories();
interactorsBase.CreateAllIneractors();
без всяких проверок? Где гарантия что создание Всех репозиториев и интеракторов уже произошло?
Привет, очень крутые видео, но жаль что нету ссылки с кодом для каждого видео
бля, спасибо
А почему не Zenject вместо Base?
ZenJect - эт прокидывание ссылок при создании объектов, то есть на этапе создания объекта мне нужно иметь ссылку на объект, то есть где-то его взять. В крупных проектах это может стать неудобным, и, как мне кажется, мой подход удобнее.
Но опять же, это просто два похожих подхода к архитектуре, выбирай какой хочешь)
Я сперва не понял почему вместо Dict, ты используешь Map, смысл не меняется, а Dict всё-таки всеми одинаково понятен. Но быстро понял, что InteractorDict можно смело ставить в один ряд с неймингом типа NameString, IsFlagBool, AmountInt, UnitList и т.д. 👍 Вот только смысл не меняется 😂.
Солидарен. Я везде пишу Dick, другим ребяткам сразу понятно о чем речь и кто писал
дайте код репозитория пожалуйста
namespace Lessons.Architecture
{
public abstract class Repository
{
public virtual void OnCreate() { }
public virtual void OnStart() { }
public abstract void Initialize();
public abstract void Save();
}
}
Что-то мне кажется попахивает плохим кодом и дубляжом так как можно было создать вспомогательный класс на репозиторий и интерактор а не копипастить код... Это же ООП тут дубляж не приветсвуют тем более в таких масштабах что целые блоки кода...
Человек делает очень годный контент, но люди все равно будут смотреть попсовых хауди хо, Дударей и прочее дерьмище
Ну, вот "Флатинго", скажем - нас покинул, - как жить... как жить... :))))))))))))))))))))))
Там не люди, а школьники скорее всего