Размышляя о том, как работает pinpad, который мой банк прислал мне, вам всегда нужно вводить две цифры после десятичной точки, а форматирование на дисплее касается положения точки.
Поэтому, если я вхожу в «1», он интерпретируется как 0,01. Аналогично, «1023» будет 10.23.
Я думаю, что такой же подход мог бы сработать для вас. Таким образом, 1.23 вводится как «123» и 0.80 как «80»
Я не вижу ссылки, которая ограничивает символы 0-9 # *, но все примеры следуют этому формату. Однако ваш пример начинается с * 234, который, похоже, соответствует этому правилу в спецификации
Случай a) 1, 2 или 3 цифры из набора (*, #), за которым следует 1X (Y), где X = любое число 0-4, Y = любое число 0-9, затем, необязательно «*, за которым следует любое количество любых символов» и завершение с # SEND: этот случай зарезервирован для использования HPLMN. Когда обслуживающая сеть получает такое сообщение от приглашенного абонента, оно передает сообщение USSD непосредственно в HPLMN. Если он получает его от домашнего абонента, он должен решить, следует ли его обрабатывать локально или передать его в HLR
http://www.etsi.org/deliver /etsi_ts/100600_100699/100625/07.00.00_60/ts_100625v070000p.pdf
В общем, я не уверен, что HPLMN (Home Public Land Mobile Network) или HLR (Home Location Register) будет ожидать дополнительные символы, даже если весь набор символов и даже другие наборы символов разрешены в протоколе USSD.
Полагайте, что событие интерфейс обратного вызова, где интерфейс имеет только один метод.
Только события рычага Вам нужно
события With, только необходимо реализовать обработчики для событий, Вы интересуетесь обработкой. В шаблоне интерфейса наблюдателя необходимо было бы реализовать все методы во всем интерфейсе включая реализацию тел метода для типов уведомления, о которых Вы на самом деле не заботитесь об обработке. В Вашем примере всегда необходимо реализовывать OnFoundDirectory и OnFoundFile, даже если Вы только заботитесь об одном из этих событий.
Меньше обслуживания
Другая хорошая вещь о событиях - Вы, может добавить новый к конкретному классу так, чтобы это повысило его, и Вы не должны изменять каждого существующего наблюдателя. Принимая во внимание, что, если Вы хотите добавить новый метод к интерфейсу, необходимо обойти каждый класс, который уже реализует тот интерфейс, и реализуйте новый метод во всех них. С событием, хотя, только необходимо изменить существующие классы, которые на самом деле хотят сделать что-то в ответ на новое событие, что Вы добавляете.
шаблон встроен в язык, таким образом, все знают, как использовать его
, События идиоматичны, в том, что, когда Вы видите событие, Вы знаете, как использовать его. С интерфейсом наблюдателя люди часто реализуют различные способы зарегистрироваться, чтобы получить уведомления и поднять трубку наблюдателя.. с событиями, хотя, после того как Вы изучили, как зарегистрировать и использовать одного (с + = оператор), остальные все одинаковые.
Профессионалы для интерфейсов
у меня нет многих профессионалов для интерфейсов. Я предполагаю, что они вынуждают кого-то к реализовать все методы в интерфейсе. Но, Вы не можете действительно вынудить кого-то реализовать все те методы правильно, таким образом, я не думаю, что существует много значения на этом.
Синтаксис
Некоторым людям не нравится способ, которым необходимо объявить тип делегата для каждого события. Кроме того, стандартные обработчики событий в платформе .NET следуют, имеют эти параметры: (возразите отправителю, EventArgs args). Поскольку отправитель не указывает конкретный тип, Вы имеете к удрученному, если Вы хотите использовать его. Это часто прекрасно на практике, если не совсем чувствует себя хорошо хотя, потому что Вы теряете защиту статической системы типов. Но, если Вы реализуете свои собственные события и не следуете рамочной конвенции .NET об этом, можно использовать корректный тип, столь потенциальный вниз бросающий, не требуется.
Хм, события могут использоваться для реализации шаблона The Observer. На самом деле использование событий может рассматриваться как другая реализация шаблона "наблюдатель", по моему скромному мнению.
Некоторые дальнейшие преимущества событий.
, можно достигнуть всех их (кроме набора инструментальных средств) сами, но это удивительно твердо. Например: Если Вы используете членскую переменную как List<> для хранения списка наблюдателей. При использовании foreach для итерации по нему затем какой-либо попытки добавить или удалить подписчика в одном из OnFoo (), обратные вызовы метода инициируют исключение, если Вы не напишете дальнейший код для контакта с ним чисто.
Профессионалы интерфейсного решения:
Недостатки:
Профессионалы - то, что события являются большим количеством 'точки-netty'. При разработке невидимых компонентов, которые могут быть отброшены на форму, можно сцепить их использование разработчика.
Недостатки - то, что событие только показывает единственное событие - Вам нужно отдельное событие для каждой 'вещи', о которой Вы хотите уведомить наблюдателя. Это действительно не оказывает много практического влияния за исключением того, что каждый наблюдаемый объект должен был бы содержать ссылку для каждого наблюдателя для каждого события, чрезмерно увеличивая размер памяти в случае, где существует много наблюдаемых объектов (одна из причин, они сделали другой способ управлять отношениями наблюдателя / заметными отношениями в WPF).
В Вашем случае я утверждал бы, что это не имеет большого значения. Если наблюдатель обычно интересовался бы всеми теми событиями, используйте интерфейс наблюдателя, а не отдельные события.
Java имеет поддержку языка анонимных интерфейсов, таким образом, интерфейсы обратного вызова являются вещью использовать в Java.
C# имеет поддержку анонимных делегатов - лямбд - и таким образом, события являются вещью использовать в C#.
Лучший способ решить является этим: какой удовлетворяет ситуации лучше. Это могло бы походить на глупый или бесполезный ответ, но я не думаю, что необходимо расценить один или другой как "надлежащее" решение.
Мы можем бросить сто подсказок в Вас. События являются лучшими, когда наблюдатель, как ожидают, прислушается к случайным событиям. Интерфейс является лучшим, когда наблюдатель ожидается к перечисленному ко всему данному набору событий. События являются лучшими при контакте с приложениями для GUI. Интерфейсы используют меньше памяти (единственный указатель для нескольких событий). Yadda yadda yadda. Маркированный список за и против - что-то для размышления о, но не категорический ответ. То, что действительно необходимо сделать, попробовать их обоих в реальных приложениях и получить хорошее ощущение их. Затем можно выбрать тот, который удовлетворяет ситуации лучше. Изучите выполнение формы.
, Если необходимо использовать единственный вопрос об определении, затем спросите себя, которые лучше описывают Вашу ситуацию: Ряд свободно связанных событий, любое из которых может использоваться или игнорироваться, или ряд тесно связанных событий, которые должны будут все обычно обрабатываться одним наблюдателем. Но затем, я просто описываю модель событий и интерфейсную модель, таким образом, я вернулся в самое начало: какой удовлетворяет ситуации лучше?
Я предпочитаю решение для основы события по следующим причинам