Im программирование библиотеки, я хочу структурировать свой код так, чтобы потенциальные пользователи могли легко использовать эту библиотеку. Я просмотрел this отличное видео отличного дизайна API. Одним из золотых правил является хороший дизайн. Я имею в виду два. Фасадная конструкция patten и заводской дизайн patten. Оба этих шаблона используются для достижения отличного уровня абстракции в программном коде для пользователей.Дизайн шаблона для построения кода программирования игры
Я нахожу его когда-либо настолько трудным, на котором или если оба применяются. Конечно, я бы хотел избежать антипаттенов.
Язык, который я использую, - это Python, который отличается от Java, который подчеркивается в видеосвязи, приведенной выше. Как моя библиотека будет работать:
Character class
Window class
Многие объекты символов могут быть созданы.
Скажем, если я должен был использовать шаблон дизайна фасада я бы оба эти классы инициализированы в конструкторе фасада, так что они могут быть вызваны в методах:
класс фасадов():
__init__(self): self.character = Character() self.window = Window()
Здесь я бы создал методы, которые представляют методы, созданные в классе символов и окон. Они могли бы легко назвать пользователей:
Facade = Facade()
Facade.methodUsedInCharacterClass()
Facade.methodUsedInCharacterClass()
Facade.methodUsedInWindowClass()
Но вот где я вижу фасад возникли проблемы, вы можете иметь два различных символов, которые вы хотели бы иметь, чтобы делать разные вещи. Вы можете сделать это:
Facade = Facade()
badguy= Facade.methodUsedInCharacterClass()
goodguy= Facade.methodUsedInCharacterClass()
Facade.methodUsedInWindowClass()
Вы косяк затем использовать Badguy или goodguy переменные для вызова других типов поведения, такие как
badguy.rotate()
goodguy.jump()
Это не разрешено, но есть способ сделать это?
Кроме того, поскольку конструктор вызывает классы, можно использовать фабричный метод, который во время выполнения прерывает выполнение класса, используя мое собственное понимание. Я могу только визуализировать, но в этом случае, как это применимо?
Спасибо!
Как я проиллюстрировал мой фасад неверен? –
Да. Ваш пример - это не фасад, это комбинация фабрики, фабрики конфигурации и конфигурации, а также ключ обезьяны. –
ха-ха! Хорошо, спасибо за информацию, мне нужно более убедительно объяснять это объяснение, плохо смотреть и понимать! –