“장식 자”란 무엇이며 어떻게 사용됩니까?
AngularJS의 데코레이터가 정확히 무엇인지 궁금합니다. 데코레이터가 AngularJS 문서 에 애매한 내용을 저장 하고 유튜브 비디오 에 간략히 언급 한 내용은 온라인에 많은 정보가 없습니다 .
앵귤러 녀석은 그것을 장식 자로 넣습니다 :
서비스 데코레이션은 데코레이터가 서비스 인스턴스 생성을 가로 챌 수 있도록합니다. 반환 된 인스턴스는 원래 인스턴스이거나 원래 인스턴스에 위임 된 새 인스턴스 일 수 있습니다.
나는 그것이 무엇을 의미 하는지 잘 모르겠으며 , 왜 당신 이이 논리를 서비스 자체와 분리 시킬지 잘 모르겠습니다. 예를 들어 다른 조건에서 다른 것을 반환하려면 관련 함수에 다른 인수를 전달하거나 해당 개인 상태를 공유하는 다른 함수를 사용하십시오.
나는 여전히 일종의 AngularJS 멍청한 것이므로 내가 선택한 것은 단지 무지 및 / 또는 나쁜 습관이라고 확신합니다.
좋은 사용 사례는 $provide.decorator
모듈이 의존하는 일부 타사 / 업스트림 서비스에서 사소한 "조정"을 수행해야하는 경우입니다 (서비스의 소유자 / 관리자가 아니기 때문에). 여기 plunkr의 데모입니다.
데코레이터를 사용하면 교차 절단 문제를 분리하고 서비스가 "인프라"코드에 대한 걱정없이 단일 책임 원칙을 유지할 수 있습니다.
데코레이터의 실제 사용 :
- 캐싱 : 잠재적으로 고가의 HTTP 호출을하는 서비스가있는 경우 외부 호출을하기 전에 로컬 저장소를 확인하는 캐싱 데코레이터로 서비스를 래핑 할 수 있습니다.
- 디버깅 / 추적 : 개발 / 생산 구성에 따라 디버깅 또는 추적 래퍼로 서비스를 장식하는 스위치가 있습니다.
- 스로틀 링 : 자주 트리거 된 통화를 디 바운싱 래퍼로 래핑합니다. 예를 들어 요금 제한 서비스와 쉽게 상호 작용할 수 있습니다.
이 모든 경우에 서비스의 코드를 주요 책임으로 제한합니다.
decorator
에 의해 생성 된 서비스 인스턴스를 가로 챌 수 있으며 factory, service, value, provider
, instance(service)
그렇지 않으면 옵션으로 구성 할 수없는 옵션을 변경하는 옵션을 제공합니다 .
예를 들어 테스트 목적으로 모형을 제공 할 수도 있습니다 $http
.
간단히 말해서 확장 방법과 같다고 말할 수 있습니다. 예를 들어. 클래스가 있고 두 개의 메소드가 있으며 런타임에 메소드를 더 추가하고 Decorator를 사용하려고합니다.
읽기 전용 속성 인 heaving 상수를 변경할 수 없으므로 상수와 함께 $ provide.decorator를 사용할 수 없습니다.
짧은 데코레이터는 다음과 같이 설명 할 수 있습니다.
데코레이터 기능은 서비스 생성을 가로 채서 서비스 동작을 재정의하거나 수정할 수 있습니다.
$provide
각도별로 서비스를 사용하고 다른 서비스의 구현을 수정하거나 대체합니다.
$provide.decorator('service to decorate',['$delegate', function($delegate) {
// $delegate - The original service instance,
// which can be replaced, monkey patched,
// configured, decorated or delegated to.
// ie here what is there in the 'service to decorate'
// This function will be invoked,
// when the service needs to be provided
// and should return the decorated service instance.
return $delegate;
}]);
예:
$provide.decorator('$log', ['$delegate', function($delegate) {
// This will change implementation of log.war to log.error
$delegate.warn = $delegate.error;
return $delegate;
}]);
응용
@JBland 답변 외에도.
응용 프로그램 전체 로캘 설정 :-
여기 에서 예를 찾을 수 있습니다
각도 서비스에 의한 서비스의 기본 동작 변경 및 기존 구현 :-
여기서 예를 찾을 수 있습니다
다른 환경에서 기능의 동작 전환.
참고 URL : https://stackoverflow.com/questions/16075982/what-are-decorators-and-how-are-they-used
'development' 카테고리의 다른 글
다른 모듈이 필요한 Node.js 모듈을 단위 테스트하는 방법과 전역 요구 기능을 조롱하는 방법은 무엇입니까? (0) | 2020.06.14 |
---|---|
Java 배열은 처음에 요소를 추가하는 방법 (0) | 2020.06.14 |
@synthesize는 정확히 무엇을합니까? (0) | 2020.06.14 |
Gradle, Android 및 ANDROID_HOME SDK 위치 (0) | 2020.06.14 |
X는 Y를 구현하지 않습니다 (… 메소드에는 포인터 수신기가 있습니다) (0) | 2020.06.14 |