Соединить интерфейсом с положениями объекта блокировки разработчика?

Когда работа с объектами UI в Интерфейсном Разработчике является там каким-либо способом заблокировать положение объекта, после того как Вы довольны его размещением? Я только спрашиваю, поскольку я продолжаю немного перетаскивать объекты при выборе их для редактирований, приводящих к необходимости возвратиться и настроить положения.

20
задан John Topley 17 March 2013 в 19:17
поделиться

1 ответ

Мне нравятся делегаты и события (они идут рука об руку) для разделения беспокойства (SOC).

Что такое делегат? Проще говоря, делегат - это подпись безопасного метода. События в основном хранят ссылку на коллекцию методов... События и делегаты предоставляют путь предоставлять уведомления об изменениях вне контекста нескольким потребителям...

Издатели вызывают события и подписчики получают уведомления.

Как это работает? Вот краткий пример.

Предположим, что перед обработкой заказа код должен быть действительным. В процедурном подходе ваш код (контролер) может инициировать метод «заказа». Затем заказ проверяет, а затем отправляет или отклоняет...

В подходе издатель/подписчик могут иметь следующие события OrderSubmended, OrderValidated и OrderRejected. Это ваши издатели. У вас есть несколько подписчиков, ValidateOrder, CommitOrder и ReaseOrder... ValidateOrder подписывается на OrderSubmited, CommitOrder подписывается на OrderValidated и, наконец, ReaseOrder подписывается на OrderRejected.

В качестве параметра событий вы проходите в порядке. Серия событий будет тогда...

Контроллер получает заказ. Код предполагает, что выполняется проверка NULL события...

void Init()
{
    ValidateOrder += SomeValidateMethod;
    CommitOrder += SomeCommitMethod;
    RejectOrder += SomeRejectMethod;
}

void OrderReceived(Order o)
{
  OrderEventArgs OEA = new OrderEventArgs(o);

  ValidateOrder(this, OEA);

  if (OEA.OrderIsValid)
      CommitOrder(this, OEA);
  else
      RejectOrder(this, OEA);
}

Просто так, у нас есть некоторые события. Почему мы используем мероприятия/делегатов? Допустим, код отклонения заказа обновляет базу данных, без проблем. Кто-то говорит, давайте напишем клиенту, когда заказ будет отклонен. Нужно ли выполнить рефакторинг метода SomeReireMethod? Нет, можно просто создать новый метод EmailOrderRejected и добавить его как подписчика к событию ReaseOrder.

Это очень маленький пример, но он действительно помогает при использовании брокера событий для системы в целом. Это помогает разделить зависимости между методами...

Я постараюсь продолжить с некоторыми ссылками позже, удачи.

-121--2681500-

Возможная проблема с этим заключается в раздутом преобразовании, которое генерирует устройство сопоставления образцов. Вот перевод образца программы, сгенерированный с помощью scalac -print . Даже -оптимизу не удается упростить выражение , если (true) «» _ else выдают новые выражения MatchError () .

Большие совпадения образца уже генерируют больше байт-кода, чем допустимо для одного метода, и использование этого комбинатора может усилить эту проблему.

Если бы в язык были встроены & , возможно, перевод был бы умнее. В качестве альтернативы, небольшие улучшения -оптимизы могут помочь.

-121--954908-

Выберите инспектор удостоверений ( Cmd 4 ) и выберите «All Properties» или «Localizable Properties» в меню Lock.

31
ответ дан 29 November 2019 в 23:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: