Это САМОЕ ПОНЯТНОЕ видео по абстрактной фабрике. Мало того, что полностью паттерн разобрал, да ещё и с хорошими примерами, ещё и сравнил с фабрикой и затронул понятие абстракции. Это были самые полезные 20 минут в моей жизни, спасибо тебе большое. Обязательно продолжай, у тебя очень хорошо получается объяснять, а я пойду твои другие видео смотреть. Подписка и лайк 100% обеспечены
Пожалуй лучшая подача материала, не представляю сколько времени/сил уходит на запись такого качественного контента, пожалуйста продолжайте. Надеюсь в планах есть паттерны Команда и Динамический прокси 🤓
блин, годно объясняешь.. перерыл кучу материала и снг, и зарубежного, но ты объяснил это оооочень доступно, жаль, что я пишу на плюсах.. иногда синтаксис не совсем понятен, а в целом суть уловил, пасибо большое👍
я изучаю си-шарп но вы первый кто втолковал мне принцип работы абстрактной фабрики и абстрактного метода и их взаимосвязь хотелось бы чтобы вы продолжили тему паттернов их вроде как свыше 20
Я потихоньку начинаю учить паттерны. Сначала думал, что это очень сложно и не понятно, да в прочем так оно и было, пока не наткнулся на это ЗОЛОТО среди остального кала) Материал просто бомба! Всё шикарно, и подача, и примеры, и ты соска) Ну и по классике: Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?)
Божественно! Как я рад что наткнулся на этот канал. Пересмотрю все видео. Если принимаются пожелания по темам видео, то прошу разжевать для самых маленьких и тупых что такое рефлексия и кака используется в геймдеве. Я читаю определение, но не понимаю как оно работает в коде. Пару раз видел как видео по самописным архитектурам говорили "а вот здесь у нас все разрешается рефлексией" и после этого весь ко становился непонятным
У Вас в другом видео "SOLID, 1.1 SRP " был пример с юнитами и интерфейсами attack move pickGold где говорилось надо разделять ответственность, у нас тут 3 причины для изменения в абстрактной фабрике. Как быть если нужна фракция в которой нет лучника? Надо разбить фабрику на маленькие фабрики? Еще очень интересно посмотреть на фабрику для АБ тестов потому что я не очень представляю как это фабрика для интерфейсов, их обычно вручную создаешь из геймобектов
Если в фракциях разное количество юнитов, я бы сделал одну фабрику и некий конфиг типа dictionary, в котором указывалось бы, какой фракции какие юниты принадлежат. А дальше уже в зависимости от ID юнита я бы наполнял его параметрами и всем остальным. Фабрика для АБ-тестов тоже реализуема, если у вас есть разные ScriptableObject на основе которых выбирается та или иная группа
Очень классно объяснил. Мне жутко нравится ваша подача. В начале вы говорили, что можете показать примеры реализации порождающих паттернов в Unity(Factory, Abstract Factory, Prototype, Builder). У меня возник вопрос по этому поводу. Разве, есть реализация паттерна Prototype в Unity? Я читал раньше, что сам Instantiate это и есть реализация Prototype. Есть еще способы как его можно реализовать?
В начале этого видео я показывал популярные порождающие паттерны, я не говорил что могу показать примеры реализации 🙂 В видео я говорил о том, что некоторые паттерны я разберу а дальше как пойдет. Могу ошибаться, но вроде как Instantiate работает только с UnityEngine.Object. Если вы создаёте не монобеховские сущности, мне кажется паттерн Прототип можно таки реализовать и на это может быть запрос. Хотя за всё время разработки не помню, чтобы я этот паттерн использовал на практике :)
А можно ли указывать в метод создания юнитов параметры для инициализации объекта? Пример есть солдат и сквад, при создании солдата мы должны дать ему сквад для его правильной инициализации.
Мне кажется что возможно допилить абстрактную фабрику так чтобы была возможность туда запихивать конкретные фабрики с разным количеством юнитов и так чтобы это не ломало логику использования самого паттерна. Но нужно подумать как😅 Вот и задачка на подумать
Не знаю правильно ли это, но мне кажеться если создать абстрактный клас Unit и сделать интерфейс IUnitFactory в котором будет всего одна функция Unit CreateUnit(int type) и реализовать этот метод как фабричный. Правда хз будет ли это тогда абстрактная фабрика в полной мере
Сергей, а как насчет наследования FactoryMethod в том случае, когда нужно из них создать одну абстрактную фабрику? По типу: AbstractFactory : IFactory, IFactory { Archer Create(); Magic Create(); } По синтаксису есть косяки, с телефона пишу. Но суть думаю ясна.
Да, так можно сделать, но по факту это будет разновидность абстрактной фабрики. Просто в вашем примере всё равно что абстрактная фабрика должна реализовать методы Create, что фабричный метод должен реализовать метод Create. То есть не так чувствуется то самое "Наследование vs Композиция". И потому я и говорю что скорее всего авторами этого тейка подразумевается, что абстрактные фабрики мы ВСТАВЛЯЕМ в нужный нам класс, а фабричный метод мы РЕАЛИЗОВЫВАЕМ в нужном нам классе. В общем, поэтому я этот признак различия и не люблю :)
Подскажите пожалуйста, если я создаю абстрактную фабрику для создания противников рационально создавать enemy state machine для контроля анимаций и действий ?
Мне кажется рационально. Тут главное подумать, должна ли быть одна Стейт машина на всех врагов или по одной Стейт машине на врага. Второй вариант мне кажется прозрачнее
Такой вопрос, если у меня нет разных семейств, но у меня все униты разные. Например есть зомби, скелет и т.д, у каждого соответственно свои механики и все наследуются от абстракции enemy. Так вот стоит ли использовать абстрактную фабрику или фабричный метод?
Как я понимаю в данном сравнении под наследованием подразумевается реализация логики в производных классах, неважно, реализацию интерфейса или абстрактного класса. Можно например сделать не интерфейс IFactoryMethod а какой-нибудь абстрактный класс с абстрактным методом FactoryMethod, тогда будет реализация производного класса.
Здравствуйте. Помогите, пожалуйста. В видео была упомянута реализация шахматных фигур с помощью абстрактной фабрики. Я решил попробовать реализовать это на практике, но столкнулся с проблемой. У нас на поле 8 белых и 8 черных пешек. Я решил создать абстрактный класс Пешка, хранящий в себе основной функционал. Также есть класс белых пешек и черных пешек, оба наследуются от класса Пешка и отвечают за атаку и передвижение. По сути 8 белых пешек будут иметь отличие только в расположении на доске, так же и 8 черных пешек. Как мне с помощью паттерна создать эти самые 16 пешек? Делать 16 объектов, прописывая руками название каждой пешки, не очень мне нравится (например, мы захотим сто пешек, а не 16)
Ну тут без цикла не обойтись, я бы сделал что-то типа Int blackPawnsRowId = 7;// линия черных пешек на шахмате имеет номер 7 For (int i = 0; I = 8; I++) { BlackChessFactory.CreatePawn(i,blackpawnsId) } С белыми пешками аналогично,
@@sergeykazantsev1655 А как взаимодействовать с созданными объектами, у них же имен не будет, значит я не смогу к ним обратиться, или я чего-то не понимаю?
Их надо будет поместить в какую нибудь коллекцию. Есть несколько вариантов, тут нужно подумать, что будет удобнее и эффективнее Можно создать двумерный массив 8х8 и каждый элемент будет соответствовать содержимому клетки на поле(либо пустое либо фигура). С другой стороны как быстро понять сколько у тебя например черных фигур такое решение не даст Или может просто при создании сохранить еще чёрные фигуры в один лист, а белые в другой и комбинировать с предыдущим 🤔 Не могу все тонкости предусмотреть, пока сам такое писать не начну)
Здравствуйте, такой вопрос, можно ли логику создания юнита(createMage, CreateKnight, CreateArcher) вынести в один отдельный метод, так как код повторяется?) Заранее спасибо
Можно. Но в зависимости от того, КАК вы это сделаете - это либо будет, либо не будет абстрактной фабрикой. Если просто создать абстрактный метод CreateUnit(enum UnitType) и сделать два производных метода RedUnitsFactory.CreateUnit(enum UnitType) и BlueUnitsFactory.CreateUnit(enum UnitType) - то абстрактная фабрика станет фабричным методом. Можно вообще забить на наследование, просто бахнуть метод CreateUnit с огромным свич-кейсом внутри на каждый вариант. Но это будет простой фабрикой. Я же в этом видео пытался на простом показать именно абстрактную фабрику и идею семейства объектов.
Привет! Я пишу бота, мне необходимо реализовать несколько его действий. Действия я реализую классами-наследниками, но для вызова метода самого действия я бы хотел использовать делегат. Т.к. делегату требуется статический метод для инициализации, а в методах я обращаюсь к полям класса, возникает конфликт. Подскажите, какой вариант реализации лучше использовать: интерфейс или фабрику? Благодарю, если сможете ответить - это мне очень поможет 😊
Добавлю, что вариант "передавать объект класса в метод" не реализуется, т.к. в таком случае отпадает реализация через делегат - (наследник класса ≠ объект класса)
Как саблист и хемашник с многолетним стажем не могу согласиться) Катана это оружие характерное только для Японии, имеет длинную рукоять под полуторный хват. Да, тот же Миямото Мусаси говорил что ей можно работать одной рукой, но что по балансу, что по весу, что по технике изготовления - катана слишком характерна. Под саблей кстати тоже в разные эпохи подразумевают разное, но сабля никогда не раcсчитывалась на полуторный хват, да и динамика у неё совершенно другая. Единственное что их объединяет - это наличие острой и тупой стороны, дугообразное лезвие и возможность работать одной рукой :P
@@sergeykazantsev1655 Эм... Полуторный хват?) Это как?) Хват может быть либо одноручным, либо двуручным. Оружие может быть одноручным, полуторным либо двуручным. Двуручным оружием баланс и вес не позволяет работать одноручным хватом, только двуручным, полуторным оружием можно работать как одноручным так и двуручным хватом, одноручное оружие предназначено только для одноручного хвата из-за длинны рукояти(его чисто физически нельзя нормально взять двумя руками). Что-то вы попутали... P.s. в последнем абзаце вы, по-сути, дали чисто техническое современно определение сабли. О культурных и исторических особенностях я речи не вел(хоть явно этого и не сказал, мое упущение)
Полуторный хват у полуторного оружия) То есть ты можешь работать как одной рукой так и двумя. Мы говорим об одном и том же. Катана считается полуторным оружием, её можно держать двумя руками, саблю двумя руками взять не получится. Сабля имеет короткую рукоять, по сравнению с катаной, форма гарды у катаны резко отличается, если вообще цубу можно назвать гардой. У катаны нет навершия, у сабли есть. Тип заточки лезвия разный. Да и опять же - баланс у них совершенно разный, работал и тем и тем - как небо и земля. Если уж разводить срач, надо не катану с саблей сравнивать, а шпагу с рапирой, вот там фехтовальщики начинают брызжать слюной и оскорблять оппонентов :)
Ну если считать что сабля это любое оружие с дугообразным односторонним лезвием, то да, катану можно приписать. Но если добавить практический и исторический контекст, и любому человеку показать саблю и катану - вряд ли он их спутает, а значит это не одно и то же)
Это САМОЕ ПОНЯТНОЕ видео по абстрактной фабрике. Мало того, что полностью паттерн разобрал, да ещё и с хорошими примерами, ещё и сравнил с фабрикой и затронул понятие абстракции. Это были самые полезные 20 минут в моей жизни, спасибо тебе большое. Обязательно продолжай, у тебя очень хорошо получается объяснять, а я пойду твои другие видео смотреть. Подписка и лайк 100% обеспечены
Пожалуй лучшая подача материала, не представляю сколько времени/сил уходит на запись такого качественного контента, пожалуйста продолжайте. Надеюсь в планах есть паттерны Команда и Динамический прокси 🤓
блин, годно объясняешь.. перерыл кучу материала и снг, и зарубежного, но ты объяснил это оооочень доступно, жаль, что я пишу на плюсах.. иногда синтаксис не совсем понятен, а в целом суть уловил, пасибо большое👍
В какой-то момент захотелось ещё раз посиавить лайк, но поняла, что я это кже сделаоа. Спасибо за видео
Крутое объяснение теории в виде примера из игр. Стало более понятно. Изучаю ООП в Python. Спасибо!
Автор очень постарался макс доступно донести. Спасибо за вашу работу!
Вы или учились преподавательскому делу или вы гений, структурность, краткость, четкость и простота в объяснении на невероятном уровне
я изучаю си-шарп
но вы первый кто втолковал мне принцип работы абстрактной фабрики и абстрактного метода и их взаимосвязь
хотелось бы чтобы вы продолжили тему паттернов
их вроде как свыше 20
В ближайших планах у меня стоит Zenject, MvvM на практике и Decorator. А дальше как пойдет)
Рад, что нашел этот канал. Жаль что каждый раз смеюсь с Торетто и приходится пересматривать
Когда монтировал это видео, меня всегда разрывало от смеха, когда вставлял картинку с Домиником)
Чисто случайно наткнулась на канал, очень крутой контент, продолжай в том же духе!
Хотелось бы увидеть в дальнейшем видос про MVC
очень давно обучаюсь, читал даже книги по паттернам, но это видео самое толковое по объяснению абстр. фабрики
Та вообще на первой картинке все понятно) четко подобрал)
Я потихоньку начинаю учить паттерны. Сначала думал, что это очень сложно и не понятно, да в прочем так оно и было, пока не наткнулся на это ЗОЛОТО среди остального кала) Материал просто бомба! Всё шикарно, и подача, и примеры, и ты соска) Ну и по классике: Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?)
А может, что ты достаточно прочитал, чтобы начать понимать, что говорят.
Не понимал этот патерн. А тут как понял. Спасибо большое, прекрасный канал!
Наконец-то, толковое объяснение!
Божественно! Как я рад что наткнулся на этот канал. Пересмотрю все видео. Если принимаются пожелания по темам видео, то прошу разжевать для самых маленьких и тупых что такое рефлексия и кака используется в геймдеве. Я читаю определение, но не понимаю как оно работает в коде. Пару раз видел как видео по самописным архитектурам говорили "а вот здесь у нас все разрешается рефлексией" и после этого весь ко становился непонятным
Напиши мне в тг, я тебе объясню)
@@sergeykazantsev1655 и как в телеграмме канал называется? Я бы написал вечером.
@wargy мой тг, канала пока нет, но он сейчас и не нужен
Лучшее объяснение что я видел! Лайк, подписка и спасибо!
У Вас в другом видео "SOLID, 1.1 SRP " был пример с юнитами и интерфейсами attack move pickGold где говорилось надо разделять ответственность, у нас тут 3 причины для изменения в абстрактной фабрике. Как быть если нужна фракция в которой нет лучника? Надо разбить фабрику на маленькие фабрики? Еще очень интересно посмотреть на фабрику для АБ тестов потому что я не очень представляю как это фабрика для интерфейсов, их обычно вручную создаешь из геймобектов
Если в фракциях разное количество юнитов, я бы сделал одну фабрику и некий конфиг типа dictionary, в котором указывалось бы, какой фракции какие юниты принадлежат. А дальше уже в зависимости от ID юнита я бы наполнял его параметрами и всем остальным.
Фабрика для АБ-тестов тоже реализуема, если у вас есть разные ScriptableObject на основе которых выбирается та или иная группа
как всегда лучший
Спасибо большое, скорее бы следующее видео
самое понятное объяснение! молодец
Потрясающее видео!
Спасибо! Отличная подача!
Спасибо, очень хорошо объясняется.
Очень понравилась подача , жду продолжение с нетерпением )
p/s если добавите ссылку на примеры (git) будет вообще сахар -
Гитхаб на проект с демкой из видео: github.com/Haywaar/PatternDemoStorage
Лежит по пути Assets/Patterns/AbstractFactory
@@sergeykazantsev1655 Оперативно - спасибо большое ! )
Очень здорово
Очень классно объяснил. Мне жутко нравится ваша подача.
В начале вы говорили, что можете показать примеры реализации порождающих паттернов в Unity(Factory, Abstract Factory, Prototype, Builder).
У меня возник вопрос по этому поводу. Разве, есть реализация паттерна Prototype в Unity? Я читал раньше, что сам Instantiate это и есть реализация Prototype.
Есть еще способы как его можно реализовать?
В начале этого видео я показывал популярные порождающие паттерны, я не говорил что могу показать примеры реализации 🙂 В видео я говорил о том, что некоторые паттерны я разберу а дальше как пойдет.
Могу ошибаться, но вроде как Instantiate работает только с UnityEngine.Object. Если вы создаёте не монобеховские сущности, мне кажется паттерн Прототип можно таки реализовать и на это может быть запрос.
Хотя за всё время разработки не помню, чтобы я этот паттерн использовал на практике :)
А можно ли указывать в метод создания юнитов параметры для инициализации объекта? Пример есть солдат и сквад, при создании солдата мы должны дать ему сквад для его правильной инициализации.
Можно
@@sergeykazantsev1655 Спасибо
Спасибо!
Мне кажется что возможно допилить абстрактную фабрику так чтобы была возможность туда запихивать конкретные фабрики с разным количеством юнитов и так чтобы это не ломало логику использования самого паттерна. Но нужно подумать как😅
Вот и задачка на подумать
Не знаю правильно ли это, но мне кажеться если создать абстрактный клас Unit и сделать интерфейс IUnitFactory в котором будет всего одна функция Unit CreateUnit(int type) и реализовать этот метод как фабричный. Правда хз будет ли это тогда абстрактная фабрика в полной мере
Сергей, а как насчет наследования FactoryMethod в том случае, когда нужно из них создать одну абстрактную фабрику?
По типу:
AbstractFactory : IFactory, IFactory
{
Archer Create();
Magic Create();
}
По синтаксису есть косяки, с телефона пишу. Но суть думаю ясна.
Да, так можно сделать, но по факту это будет разновидность абстрактной фабрики. Просто в вашем примере всё равно что абстрактная фабрика должна реализовать методы Create, что фабричный метод должен реализовать метод Create.
То есть не так чувствуется то самое "Наследование vs Композиция". И потому я и говорю что скорее всего авторами этого тейка подразумевается, что абстрактные фабрики мы ВСТАВЛЯЕМ в нужный нам класс, а фабричный метод мы РЕАЛИЗОВЫВАЕМ в нужном нам классе. В общем, поэтому я этот признак различия и не люблю :)
Добрый день, сделайте видосик про паттерн билдер. Билдер, насколько знаю, частенько используется с фабрикой в паре.
Подскажите пожалуйста, если я создаю абстрактную фабрику для создания противников рационально создавать enemy state machine для контроля анимаций и действий ?
Мне кажется рационально. Тут главное подумать, должна ли быть одна Стейт машина на всех врагов или по одной Стейт машине на врага. Второй вариант мне кажется прозрачнее
Спасибо!
Такой вопрос, если у меня нет разных семейств, но у меня все униты разные. Например есть зомби, скелет и т.д, у каждого соответственно свои механики и все наследуются от абстракции enemy. Так вот стоит ли использовать абстрактную фабрику или фабричный метод?
Скорее всего нет, и проще сделать некую единую фабрику которая создает всех юнитов.
А почему в фабричном методе "наследование" когда там вроде как "реализация интерфейса" ?
Как я понимаю в данном сравнении под наследованием подразумевается реализация логики в производных классах, неважно, реализацию интерфейса или абстрактного класса. Можно например сделать не интерфейс IFactoryMethod а какой-нибудь абстрактный класс с абстрактным методом FactoryMethod, тогда будет реализация производного класса.
7:42 Напомнило рекламу, где 2 фабрики для одной шоколадки соревновались, у кого вкуснее, правая или левая :)
Ну тут-то палочки таки отличаются :D
круто
Здравствуйте. Помогите, пожалуйста. В видео была упомянута реализация шахматных фигур с помощью абстрактной фабрики. Я решил попробовать реализовать это на практике, но столкнулся с проблемой. У нас на поле 8 белых и 8 черных пешек. Я решил создать абстрактный класс Пешка, хранящий в себе основной функционал. Также есть класс белых пешек и черных пешек, оба наследуются от класса Пешка и отвечают за атаку и передвижение. По сути 8 белых пешек будут иметь отличие только в расположении на доске, так же и 8 черных пешек. Как мне с помощью паттерна создать эти самые 16 пешек? Делать 16 объектов, прописывая руками название каждой пешки, не очень мне нравится (например, мы захотим сто пешек, а не 16)
Ну тут без цикла не обойтись, я бы сделал что-то типа
Int blackPawnsRowId = 7;// линия черных пешек на шахмате имеет номер 7
For (int i = 0; I = 8; I++)
{
BlackChessFactory.CreatePawn(i,blackpawnsId)
}
С белыми пешками аналогично,
@@sergeykazantsev1655 А как взаимодействовать с созданными объектами, у них же имен не будет, значит я не смогу к ним обратиться, или я чего-то не понимаю?
Их надо будет поместить в какую нибудь коллекцию. Есть несколько вариантов, тут нужно подумать, что будет удобнее и эффективнее
Можно создать двумерный массив 8х8 и каждый элемент будет соответствовать содержимому клетки на поле(либо пустое либо фигура). С другой стороны как быстро понять сколько у тебя например черных фигур такое решение не даст
Или может просто при создании сохранить еще чёрные фигуры в один лист, а белые в другой и комбинировать с предыдущим 🤔
Не могу все тонкости предусмотреть, пока сам такое писать не начну)
Здравствуйте, такой вопрос, можно ли логику создания юнита(createMage, CreateKnight, CreateArcher) вынести в один отдельный метод, так как код повторяется?) Заранее спасибо
Можно. Но в зависимости от того, КАК вы это сделаете - это либо будет, либо не будет абстрактной фабрикой. Если просто создать абстрактный метод CreateUnit(enum UnitType) и сделать два производных метода RedUnitsFactory.CreateUnit(enum UnitType) и BlueUnitsFactory.CreateUnit(enum UnitType) - то абстрактная фабрика станет фабричным методом. Можно вообще забить на наследование, просто бахнуть метод CreateUnit с огромным свич-кейсом внутри на каждый вариант. Но это будет простой фабрикой. Я же в этом видео пытался на простом показать именно абстрактную фабрику и идею семейства объектов.
Привет! Я пишу бота, мне необходимо реализовать несколько его действий. Действия я реализую классами-наследниками, но для вызова метода самого действия я бы хотел использовать делегат. Т.к. делегату требуется статический метод для инициализации, а в методах я обращаюсь к полям класса, возникает конфликт. Подскажите, какой вариант реализации лучше использовать: интерфейс или фабрику? Благодарю, если сможете ответить - это мне очень поможет 😊
Добавлю, что вариант "передавать объект класса в метод" не реализуется, т.к. в таком случае отпадает реализация через делегат - (наследник класса ≠ объект класса)
Без кода непонятно ничего, напишите в личку, авось к пятнице прочухаюсь и поищу решение
Но катана - это не меч, а сабля...
Как саблист и хемашник с многолетним стажем не могу согласиться)
Катана это оружие характерное только для Японии, имеет длинную рукоять под полуторный хват. Да, тот же Миямото Мусаси говорил что ей можно работать одной рукой, но что по балансу, что по весу, что по технике изготовления - катана слишком характерна.
Под саблей кстати тоже в разные эпохи подразумевают разное, но сабля никогда не раcсчитывалась на полуторный хват, да и динамика у неё совершенно другая.
Единственное что их объединяет - это наличие острой и тупой стороны, дугообразное лезвие и возможность работать одной рукой :P
@@sergeykazantsev1655 Эм... Полуторный хват?) Это как?) Хват может быть либо одноручным, либо двуручным. Оружие может быть одноручным, полуторным либо двуручным. Двуручным оружием баланс и вес не позволяет работать одноручным хватом, только двуручным, полуторным оружием можно работать как одноручным так и двуручным хватом, одноручное оружие предназначено только для одноручного хвата из-за длинны рукояти(его чисто физически нельзя нормально взять двумя руками). Что-то вы попутали...
P.s. в последнем абзаце вы, по-сути, дали чисто техническое современно определение сабли. О культурных и исторических особенностях я речи не вел(хоть явно этого и не сказал, мое упущение)
Полуторный хват у полуторного оружия) То есть ты можешь работать как одной рукой так и двумя. Мы говорим об одном и том же.
Катана считается полуторным оружием, её можно держать двумя руками, саблю двумя руками взять не получится.
Сабля имеет короткую рукоять, по сравнению с катаной, форма гарды у катаны резко отличается, если вообще цубу можно назвать гардой. У катаны нет навершия, у сабли есть. Тип заточки лезвия разный. Да и опять же - баланс у них совершенно разный, работал и тем и тем - как небо и земля.
Если уж разводить срач, надо не катану с саблей сравнивать, а шпагу с рапирой, вот там фехтовальщики начинают брызжать слюной и оскорблять оппонентов :)
@@sergeykazantsev1655 не ну за шпагу с рапирой и застрелить могут. А катана с саблей - это так, интереса ради.)
Ну если считать что сабля это любое оружие с дугообразным односторонним лезвием, то да, катану можно приписать. Но если добавить практический и исторический контекст, и любому человеку показать саблю и катану - вряд ли он их спутает, а значит это не одно и то же)