Что такое Аспектно-ориентированное программирование? [дубликат]

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

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

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

14
задан Community 23 May 2017 в 12:09
поделиться

5 ответов

Условия Laymans таким образом позволяют мне дать Вам пример. Скажем, у Вас есть веб-приложение, и необходимо добавить регистрацию ошибок / аудит. Одна реализация должна была бы войти в каждый открытый метод и добавить, что Ваши блоки выгоды попытки и т.д.

Хорошо Аспектно-ориентированный говорят, что пойло для свиней, со что, позволь мне ввести свой метод вокруг Вашего метода так, например, вместо того, чтобы назвать YourClass. UpdateModel (), система могла бы звонить,

LoggingHandler. CallMethod () этот метод мог бы затем перенаправить вызов к UpdateModel, но переносит его в блок выгоды попытки для обработки регистрирующихся ошибок.

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

Это работает на то, поскольку Вы сказали перекрестные сокращающие вещи, которые являются очень общими элементами программирования, которые существуют в каждом домене, таком как: Вход, Аудит, менеджмент Транзакции, Авторизация.

идея позади него состоит в том, чтобы удалить весь этот общий код инфраструктуры из Вашего бизнеса / уровень приложений, таким образом, можно сфокусироваться на решении проблемы, не вызывающей беспокойство о входе этого вызова метода или того вызова метода.

30
ответ дан 1 December 2019 в 06:43
поделиться

Класс и атрибуты метода в.NET являются формой аспектно-ориентированного программирования. Вы украшаете свои классы/методы атрибутами. Негласно это добавляет код к Вашему классу/методу, который выполняет конкретные функции атрибута. Например, маркировка сериализуемого класса позволяет этому быть сериализированным автоматически для устройства хранения данных или передачи к другой системе. Другие атрибуты могли бы отметить определенные свойства как несериализуемые, и они будут автоматически опущены от сериализованного объекта. Сериализация является аспектом, реализованным другим кодом в системе, и относилась к Вашему классу приложением атрибута "конфигурации" (художественное оформление).

9
ответ дан 1 December 2019 в 06:43
поделиться

AOP - все об управлении общей функциональностью (которые охватывают через приложение, следовательно перекрестное вырезание) в рамках приложения, таким образом, что это не встраивается в бизнес-логике.

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

, Платформы позволяют это управляемому автоматически с помощью некоторых конфигурационных файлов.

2
ответ дан 1 December 2019 в 06:43
поделиться

Я в настоящее время использую Sharp Сообщения, я считал бы информацию из их веб-сайта. Я использую его для обеспечения безопасности вокруг вызовов метода.

"PostSharp является открытой платформой для анализа и преобразования блоков.NET. Это идет с PostSharp Лаос, мощный все же простой плагин, которые позволяют Вам разработать пользовательские атрибуты, который на самом деле добавляет поведение Вашего кода. PostSharp Лаос является ведущим решением для аспектно-ориентированного программирования (AOP) для Платформы.NET".

1
ответ дан 1 December 2019 в 06:43
поделиться

Классическими примерами является безопасность и вход. Вместо написания кода в рамках Вашего приложения для входа происшествия x или проверки возражают z для управления доступом безопасности существует хитрое изобретение языка "из полосы" нормального кода, который может систематически вводить безопасность или вхождение в стандартные программы, которые не делают nativly имеют их таким способом это даже при том, что код не предоставляет его - его заботившийся из.

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

, Если Вы думаете, что Вам нужен AOP, по моему опыту, на самом деле действительно необходимо инвестировать больше времени и усилия в соответствующее управление метаданных в системе с вниманием на хорошо мысль, структурную / проектирование систем.

1
ответ дан 1 December 2019 в 06:43
поделиться
Другие вопросы по тегам:

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