проанализировав можно понять как работает... Дак что именно "мост" - не сказано, пальцем не показано. 2 иерархии классов связанные друг с другом, а где мост то?
И в этом весь смысл фасада?.. внедрение а ля композиция в качестве реализации клиентского класса… не зря говорил кто-то, что фасад - это если у вас с архитектурой совсем беда, х.рачь все в годобжект, пусть клиент управляет через одну точку входа… не представляю, где в здравом уме можно это все винтить…
Вот именно. Зачем указывать абстрактную аннотацию классу который выпускает определенный вид двигателей. Получается это подразумевает то что этот метод допускает все двигатели всех марок? Но зачем?
В «интерфейсах» лучше реализовывать выброс not implemented error… имхо… тогда разрабы, забывшие реализовать поведение этого интерфейса, будут сразу получать exception
Фабричный метод подходит, когда нужно дать подклассам возможность контролировать создание одного типа объекта. Абстрактная фабрика используется, когда нужно создавать семейства связанных объектов, которые должны работать вместе и быть взаимозаменяемыми.
Проблема 99% подобных обучающих материалов в том, что демонстрация применения паттерна осуществляется в искусственном окружении, на искусственном примере. Суть паттерна поймет любая обезьяна, а написать примитивный код сможет даже шимпанзе. Где наглядно можно продемонстрировать неправильную работу функционала и правильную (паттерн) это в геймдеве. А если не в геймдеве, то среднестатистический интерн (джун?) не сможет понять куда как и когда это паттерн засовывать, так как у него нет опыта в проектировании сложных систем где такие паттерны могут применяться.
если 3 раза запустить конвеер, то получим состояния : off >>> on > on > on; а потом 3 раза нажать cancel, получим: on < off < off <<< off, т.е. промежуточные состояния не соотвествуют друг-другу. Поэтому вместо того что бы просто пушить все нажатия в стак, нужно сначала проверить, адекватна ли команда (меняется ли состояние или нет), в противном случае игнорировать нажатие.
И всё же спасибо за видео! //Интерфейс - абстрактное представление выпуска нового автомобиля class IProduction { public: virtual void Release() = 0; virtual ~ IProduction() {} }; // Интерфейс абстрактного цеха по производству автомобилей class IWorkShop { public: // метод, возвратит абстрактный автомобиль virtual IProduction* Create() = 0; virtual ~ IWorkShop(){} }; да, добавить деструкторы и динамическое освобождение памяти int main() { // code // delete creator; delete car; delete truck; }
Надо было сначала подкинуть андроид девелопера и сделать полную версию телефона, а потом яблочнх разрабов и сделать урезанную версию, тогда бы получился айфон на андроиде