Я пытаюсь ознакомиться с шаблонами проектирования, модульностью, модульным тестированием и т. Д. (С помощью ActionScript).
Я сейчас разрабатываю простой «Инструмент свободного преобразования», просто как упражнение, но мне не нравятся решения, которые я придумала до сих пор, поэтому я постараюсь рассказать вам о них подробнее.моя линия мыслей.Когда у меня возникла идея, я подумал: «Что написать, чтобы я мог протестировать эту замечательную инфраструктуру модульного тестирования FlexUnit», первым, что я увидел, было угадать, что ... бесплатный инструмент преобразования.:) Когда я размышлял об архитектуре инструмента, я запускал все сценарии «Как мне написать модульные тесты для этой вещи?», Поэтому я придумал какой-то извращенный мета-шаблон MVC:
- Представление, содержащее все компоненты (область вращения, область перетаскивания, кнопки изменения размера)
- Модель (или что-то подобное), которая содержит необходимую логику (setSize, setPositiom, rotateAroundCenter и т. Д.).
- И контроллер, который добавляет прослушиватели к компонентам представления, обновляет курсор мыши, когда он находится над компонентом, получает координаты мыши, когда взаимодействует с компонентом, выполняет вычисления и вызывает методы из модели, которая обновитвид и объект, который доброкачественно преобразован.
Я думал: «Хорошо, он гибкий, я могу переключать M, V или C в любое время, я достиг своей главной цели, потому что я могу сделать многомодульного теста для модели, где важные вычисления, так что это здорово .. ".
Я только начал его реализовывать, но ячернила, большинство этих мыслей ошибочны.Да, я могу изменить вид и добавить новый скин, но он совсем не гибкий, если я хочу добавить «косую» (или любую другую) функциональность, я должен переписать (или, если мне повезет, просто расширить) M, V и C.Да, я могу сделать групповой тест для модели, но вычисления контроллера будет сложно проверить.
Так что теперь я думаю о чем-то вроде шаблона Decorator, который позволит мне создать любую комбинацию элементов управления, которую я хочуиспользовать и держать их логику раздельно, но я хочу иметь возможность перекрасить сами элементы управления и оставить логику разделенной, чтобы я мог выполнять тесты.
Я понимаю, что хочу создать что-то вроде "окончательный инструмент преобразования ", но я действительно стараюсь раздвинуть границы и чему-то научиться.