그들이 클래스를 작성하는 경우 Aspect 지향적 인 프로그래밍 AOP-- 잠금, 캐시, 로깅, 추적, 이러한 일반적인 작업의 동기화는, 각 클래스는이 문제를 해결하기 위해 다중 상속은 매우 추한, AOP가됩니다 사용하여이 기능을 사용

적용 사례


동시에 먼저, 동시에 액세스되는 공유 데이터가 있어야 응용 시스템을 가정 데이터 캡슐화 데이터 객체 , 착신 데이터 클래스가 동시에 동시에 액세스하기위한 복수의 클래스에 대한 액세스가있을 것이다 이 같은 데이터 객체.
같은 자원에 대한 위의 동시 액세스를 달성하기 위해, 당신은 데이터 개체에 액세스 할 수있는 액세스 클래스가 어떤 점에서이다 잠금 잠금,의 개념을 도입 할 필요가 데이터 객체의 잠금이 해제 즉시 실행 한 후, 잠금 잠겨 있어야 액세스의 다른 액세스 유형에 대해 다음, 잠금 해제.
기존의 프로그래밍 방법을 사용하여, 우리가 만듭니다 추상 클래스를 다음과 같이 모든 액세스 클래스는, 부모가되는 추상 클래스를 상속 :
1
4
5
abstract  class  Worker {
     abstract  void  locked();
     abstract  void  accessDataObject();
     abstract  void  unlocked();
}
accessDataObject () 메소드는 관련 코드 "잠금"상태 등을 필요로한다.
특정 액세스 클래스는 특정 액세스 클래스는 다른 부모 작업자로, 다른 부모를 쉽게 달성되지 않습니다 상속하는 경우에도 부모 클래스를 상속 할 수 있도록 자바는 단일 상속만을 제공합니다.
재사용은 특정 액세스 클래스는 또한 코드에 포함되어 있기 때문에, 관련 케이스 재사용, "잠금"매우 좁은 범위에서 재사용 될 수있다 "잠금"상태 등을 할인한다.
연구 응용 프로그램을 "잠금"조심해, 실제로는 다음과 같은 특징이 있습니다 :
"잠금"기본 기능 또는 주요 기능은 특정 액세스 유형이 아닌, 액세스 등급의 주요 기능은 데이터를 판독 또는 변경 동작과 같이, 데이터 객체에 액세스한다.
"잠금"함수 클래스, 메소드, 많은 클래스들을 포함하는, 실제로 시스템의 종단면도이다. 이러한 권리로 :
따라서, 새로운 프로그램 구조는 "잠금"기능의 애플리케이션과 시스템의 종단면도, 염려해야 새로운 프로그램 구조 (형태)이 형태 인
이 응용 프로그램에서 "잠금"측면 (측면) 다음과 같은 책임이 있어야합니다
로크 또는 액세스되는 객체의 기능을 잠금 해제를 달성하기 위해 필요한 기능들을 제공한다. 의 모든 수정하도록하려면 데이터 객체 조작하기 전에이 잠금 () 잠금을 호출 완료 후 사용할 수 있습니다, 잠금 해제 () 잠금 해제를 호출합니다.

응용 프로그램

편집
물론, AOP의 이상은 J2EE 컨테이너 서버 개발을위한 제이보스 4.0 개발을위한 AOP 프레임 워크의 사용이다.
다음과 같이 구체적인 기능은 다음과 같습니다
인증 권한
캐시 캐시
컨텍스트 통과 콘텐츠 전달
오류 처리  오류 처리
게으른 로딩 지연 로딩
디버깅 디버깅
로깅, 추적, 프로파일 링 및 모니터링 기록 사진을 추적
성능 최적화 성능 최적화
지속성 지속성
리소스 풀링 자원 풀
동기화 동기화
거래 트랜잭션
[AOP 필요? ]
물론, AOP를 사용하지 않는 경우에는 상기 응용 프로그램의 예는, 예를 들어, 제이 보스 3.XXX 또한 위의 응용 프로그램을 제공하고, AOP를 사용하지 않는, 해결되었습니다.
하지만 AOP를 사용하여 소프트웨어 시스템을 이해하기 위해 더 높은 추상화에서 우리를 허용, AOP는 유용한 도구를 제공 할 수 있습니다. 그것은 말할 수있다 : AOP, 보스 3.X에 비해 매우 중요 훨씬 쉽게 이해할 수있는 크고 복잡한 시스템을위한 제이보스 4.0 소스 코드를 사용하여 구조 때문이다.
모두가 AOP에 대해 우려 할 필요가 없습니다 것 같다 또 다른 측면에서, 당신이 J2EE 시스템을 선택하면, AOP에 대한 우려의 범용 측면은 J2EE 컨테이너 J2EE 애플리케이션 개발자를 달성 한 건축 디자인을 선택할 수 있습니다 당신은 산업 응용 측면에 더 많은 관심을 지불해야 할 수도 있습니다.
기존의 프로그램은 종종 하나의 몇 가지 자연 적합 표시 할 수 없습니다 프로그램 모듈 들은 주어진 프로그래밍 모델의 전형적인 업무의 경계를 넘어, AOP가이 동작을 크로스 커팅 호출됩니다 또는 여러 개의 밀접하게 관련된 프로그램 모듈의 동작을. 흩어져 크로스 커팅 동작을 구현, 소프트웨어 디자이너는 어려운 정상 로직 구현 및 변경이 동작을 생각하고 있습니다. 다음과 같은 이러한 크로스 커팅 행동의 가장 일반적인 중 일부 :
로깅, 추적, 최적화 및 모니터링
처리 서비스
지구력 화
성능을 최적화
같은 풀 자원, 데이터베이스 연결 풀 관리
통합 인증 시스템, 권한 관리 등
이상 캡처 및 처리 응용 시스템
특정 산업 분야에 대한 크로스 커팅 행동
여러 크로스 커팅 행동의 전면이 밀접하게 지켜되었습니다에서 관심의 초점이 될 것이다 가치있는 다양한 응용 프로그램, 그러나 아마 앞으로 몇 년, 산업별 애플리케이션에 AOP의 기여가 있었다.

프로젝트를 구현

AOP는 특정 언어의 설정을 달성하지 않는 개념, 그것은 그 단점을 언어 (자바와 같은), 다음 항목의 AOP 구체적인 실현의 단일 상속 기능을 극복 할 수 있습니다 :
AspectJ를 (TM) : 제록스 PARC는 역사의 거의 10 년, 성숙한 설립되었습니다.
단점 : 너무 복잡; 캡슐을 깰는, 자바 전문이 필요합니다 컴파일러 .
동적 AOP : JDK 동적 프록시 API 또는 바이트 코드 바이트 코드 처리 방법.
특정 프로젝트를 기반으로 동적 프록시 API는 다음과 같습니다
보스 4.0 제이 보스 4.0 서버
프로젝트 기반의 바이트 코드입니다 :
AspectWerkz를 봄

효과

프로세스 지향 프로그래밍은 우리와 다소 먼왔다, 객체 지향 프로그래밍은 소프트웨어 세계를 지배된다. 각각의 새로운으로 소프트웨어 디자이너는 하나 개의 클래스로 기능 요구 사항을 변환, 그들의 정의하는 방법을 마스터하는 데 필요한 데이터 멤버를 때 동작, 그리고 그들 사이의 복잡한 관계, 관점 지향 프로그래밍 (Aspect 지향 프로그래밍, AOP)은 우리에게 새로운 아이디어, 새로운 아이디어, 새로운 모델을 가져왔다.
객체 지향 프로그래밍은 다른 독립적 인, 잘 포장 클래스에 대한 수요 함수에 대한 우려와 상속에 의존, 자신의 행동을하는 경우 다형성 의 관계를 정의하는 등등, 그때, 너무 지향 프로그래밍입니다 그것은 변화가 클래스를 많이 수정할 필요가 없습니다 일단 클래스의 많은 행동을 공유 할 수 관련이없는에서 기능 요구 사항을 일반 클래스를 분리,하지만이 문제가 될 수 있습니다 수정해야 할 수 있습니다.
Aspect 지향적 인 프로그래밍은 흥분의 새로운 모드입니다. 소프트웨어 시스템의 개발에 대한 그 영향은 적용의 역사 수십 년이 될 것이다 객체 지향 프로그래밍 큰 등을. 들어 섹션 프로그래밍과 객체 지향 프로그래밍에만 기술뿐만 아니라 좋은 보완 서로 경쟁하지 않습니다. 객체 지향 프로그래밍은 대중의 동일한 목표 수준에 주로 사용되는 행동 모델링 . 그것의 약점은 모델에 사용 된 여러 관련이없는 객체 간의 일반적인 동작입니다. 적절한 프로그래밍 지향 곳 그리고 이것은 정확하게이다. AOP, 우리는 상호 간의 관계를 정의하고, 각각의 모델 개체는 다른 모듈에 걸쳐 이러한 관계를 적용 할 수있다. AOP는 또한 코드를 읽기 및 유지 관리가 용이하고, 오히려 내장 기능보다는 우리가 계층 기능하도록 할 수 있습니다. 프로그래밍 객체 지향과는 잘 작동

추천

출처www.cnblogs.com/bonelee/p/11539930.html