Comments 4
Честно говоря, ваш Facade ни на секунду не фасад получился :)
В другой статье уже отмечали, что интерфейс должен содержать один метод export, а в ворд, эксель или ещё куда-то экспортировать данные - это уже ответственность сервиса, который и будет реализовывать этот интерфейс.
Перед тем, как показывать реализацию класса, неплохо бы дать описание, что он будет делать. Plane ведь может быть не только самолётом, но и планом: астральнпый план и всё такое вот. Некоторые больше играют в D&D, чем летают на самолётах на английском.
Перед тем, как показывать, как какой-то класс реализует паттерн, было бы хорошо описать своими словами, что значит данное в начале официальное определение. Нужно просто создать какой-то объект, который знает, как реализуются те или иные методы, а внешний вызыватель будет обращаться к этому объекту, чтобы можно было менять количество и структуру этих методов, не заставляя вызывателя переписывать свой код, а переписывая только этот один объект? А если изменится количество параметров, то всё равно переписывать?
То есть, вместо a.fn1(param1), b.fn2(param2) вызывается c.fun1(param1), e.fun2(param2)? В двух словах: почему это удобно?
Для тех, кто не знаком с Dart, можно на словах описать, что тут у нас получилось? Какие методы класса Plane скрыты классом Facade? Как внешний код вызывал эти методы раньше и как стал вызывать теперь?
Я слабо знаком с паттернами, могу выдавать вопросы, которые могут не возникнуть у человека, который уже всё знает и понял. Они могут казаться несущественными, но если статья должна научить тех, кто ничего не знает, то и у других могут возникнуть эти же вопросы.
Патерн проектирования Фасад в Dart/Flutter