SlideShare a Scribd company logo
Шаблоны «Асинхронный фильтр» и «HasValue» в разработке desktop приложенийОлег Клинчаев,Дмитрий Ермаков
2ВводнаяИтеративная разработка…
… пользовательского интерфейса…
… специализированного приложения3«Виды интерфейса»stuffthathappens.com by Eric Burke
4Пара тезисовНе бывает интерфейсов без связанных друг с другом элементовТребования к интерфейсу постоянно меняются по ходу проекта
5Типичное приложение.Взгляд со стороны заказчика.
6Итерация 1
7Итерация 2
8Итерация 3
9Типичное приложение.Взгляд со стороны разработчика.
10Что внутриу версии 1.0?Работа с отображаемым спискомТаблица(«мастер»)Работа с выбранным элементомListSelИнформация(«деталь»)
11Что внутриу версии 1.0?Специфика API таблицыТаблица(«мастер»)ListSelИнформация(«деталь»)Под которую мы подстраиваемся
12Начинаем версию 1.1Выпадающий список вместо таблицыВыпадающийсписок(«мастер»)Реализацию «детали» пока не трогаемИнформация(«деталь»)
13Начинаем версию 1.1Те же самые свойства(как у таблицы)Выпадающийсписок(«мастер»)ListSelИнформация(«деталь»)
14Начинаем версию 1.1Специфика API выпад. спискаВыпадающийсписок(«мастер»)ListSelИнформация(«деталь»)Углы придется «сгладить»
15«Сгладили» углыЗакончили версию 1.1Выпадающийсписок(«мастер»)ListSelИнформация(«деталь»)
16А потом версия 1.2…Новая компонента…Новая специфика…Дерево(«мастер»)ListSelИнформация(«деталь»)
17Что в результатеУ кода приложения богатая история
с примесями различного API компонент
с личными предпочтениями разработчиков
Новому разработчику всё равно не понять, что делает программа
Всё время тратится на «сглаживание углов»18Можно ли решить эти проблемы?
19Первый шаг к улучшению.«Бизнес-Компоненты»БК «Выбор Файла»
Получить Выбранный файл
Подписаться на изменения
Получить Содержимое файла
Подписаться на изменения
БК «Информация о файле»
…
БК «Содержимое файла»
…20«Бизнес-Компоненты»Разные способы взаимодействия с состоянием компоненты«Выбор файла»«Информация о файле»«Содержимое файла»
21Попробуем сделать второй шаг
22«Спонсор» второго шагаGoogle Web Toolkit (в частности, доклад на Google IO 2009)Паттерн Model-View-Presenter
Набор классов и интерфейсов HasXXX(в GWT версии 2.2 – 97 штук)
HasAliases
HasAlignment
…
HasValue
…
HasWordWrap23Оценим ситуацию «в целом».API Таблицыкласс ТаблицаУстановитьСписокЭлементов
ПолучитьСписокЭлементов
ДобавитьСлушателяНаСписокЭлементов
УстановитьВыбранныйИндекс
ПолучитьВыбранныйИндекс
ДобавитьСлушателяНаВыбранныйИндекс24Оценим ситуацию «в целом».API Таблицыкласс ТаблицаУстановитьСписокЭлементов
ПолучитьСписокЭлементов
ДобавитьСлушателяНаСписокЭлементов
УстановитьВыбранныйИндекс
ПолучитьВыбранныйИндекс
ДобавитьСлушателяНаВыбранныйИндекс25Вынесем общую часть«за скобки»класс ТаблицаСписокЭлементов
Установить
Получить
ДобавитьСлушателя
ВыбранныйИндекс
Установить
Получить
ДобавитьСлушателя26класс ТаблицаСписокЭлементов
Установить
Получить
ДобавитьСлушателя
ВыбранныйИндекс
Установить
Получить
ДобавитьСлушателяСостояниеСостояние
27класс ТаблицаСписокЭлементов
Установить
Получить
ДобавитьСлушателя
ВыбранныйИндекс
Установить
Получить
ДобавитьСлушателяСостояниеИнтерфейс для работы с состоянием(«HasValue»)Состояние

More Related Content

PPTX
SECON'2016. Иовлев Роман, JDI is UI Automation Future
PPTX
JDI: Автоматизировать проще, чем кажется
PDF
UI-тесты в iOS-проекте / Михаил Домрачев (Improve Digital)
PPTX
Terevnern u andzrevy
PPTX
2011년, 등록금 인상, 이게 최선입니까?(고려대)
DOC
Doklad nns rajon
 
PPTX
De kettingbrug
PPT
сърфираи безопасно дори и в интернет
SECON'2016. Иовлев Роман, JDI is UI Automation Future
JDI: Автоматизировать проще, чем кажется
UI-тесты в iOS-проекте / Михаил Домрачев (Improve Digital)
Terevnern u andzrevy
2011년, 등록금 인상, 이게 최선입니까?(고려대)
Doklad nns rajon
 
De kettingbrug
сърфираи безопасно дори и в интернет

Similar to HasValue and AsyncFilter (20)

PPTX
Фофанов Илья - Лучшие практики проектирования и реализации API на C#
PDF
C# Desktop. Занятие 08.
PPT
Net 3.0 & Linq
PDF
MullC#.pdf
PPTX
разработка бизнес приложений (8)
PPTX
C#. От основ к эффективному коду
PPTX
PostSharp - Threading Model Library
PDF
PostSharp - Threading Model
PDF
лек11 8
PPT
5 создание графического интерфейса пользователя
PPTX
Новая платформа сбора показателей
PPT
Обзор платформы B4
PPTX
Coding like a sex
PDF
Язык программирования Scala / Владимир Успенский (TCS Bank)
PPTX
Reactive Extensions
PDF
основы ооп на языке C#. часть 1. введение в программирование
PPTX
20 объект. экранная форма
PDF
GraphQL API: Patterns | Андрей Чиж | Zlit Tech
PPTX
«трудности при разработке сложных распределённых систем на Java. способы реше...
PDF
C# Desktop. Занятие 01.
Фофанов Илья - Лучшие практики проектирования и реализации API на C#
C# Desktop. Занятие 08.
Net 3.0 & Linq
MullC#.pdf
разработка бизнес приложений (8)
C#. От основ к эффективному коду
PostSharp - Threading Model Library
PostSharp - Threading Model
лек11 8
5 создание графического интерфейса пользователя
Новая платформа сбора показателей
Обзор платформы B4
Coding like a sex
Язык программирования Scala / Владимир Успенский (TCS Bank)
Reactive Extensions
основы ооп на языке C#. часть 1. введение в программирование
20 объект. экранная форма
GraphQL API: Patterns | Андрей Чиж | Zlit Tech
«трудности при разработке сложных распределённых систем на Java. способы реше...
C# Desktop. Занятие 01.
Ad

HasValue and AsyncFilter