다가오는 프로젝트에서 의존성 주입과 aspect 지향 프로그래밍을 모두 사용할 계획입니다. DIY dependency injection guide 다음에 나 자신을 구현하고 AOP 부분에는 LOOM.Net을 사용합니다.DIY 의존성 주입과 aspect 지향성 프로그래밍
논리 클래스의 타입 interweaved 양태 클래스를 생성하는 공통 패턴
AspectClass aspect = new AspectClass();
LogicClass logic = Weaver.Create<LogicClass>(aspect);
내 직감 접착제 코드 뒤섞임을 수행하는 것, 예를 들어 인 ConcreteLogicB
class MyInjector
{
...
public ILogicA GetLogicA(AspectClass aspectToInterweave)
{
return Weaver.Create<ConcreteLogicA>(aspectToInterweave, GetLogicB(aspectToInterweave));
}
public ILogicB GetLogicB(AspectClass aspectToInterweave)
{
return Weaver.Create<ConcreteLogicB>(aspectToInterweave);
}
...
}
에 의해 구현 ILogicB
에 따라 ILogicA
를 구현하는 클래스 ConcreteLogicA
,이 실행 가능한 해결책이 될 수 있거나 방법 오프 트랙이다겠습니까. 장점은, 내 논리를 내 측면 (AOP의 단서 다.)과 섞어 놓을 필요가 없다는 점이다. 그러나이 방법으로 접착제 코드에 좀 더 많은 로직을 추가하고있다.
나에게 합리적인 것 같습니다. 어쨌든, 한 가지 더 질문이 있습니다. 데코레이터 패턴을 사용하면 인터페이스 당 하나의 애스펙트 클래스를 구현해야합니다. 그렇지 않습니까? 나는 여전히 논리 수업을 인젝터에 장식합니까? LogicAAspect : ILogicA를 가지고 있다면 예제에서 새로운 LogicAAspect (새로운 ConcreteLogicA (GetLogicB()))를 반환하겠습니까? –
@PaulKertscher : 귀하의 질문을 이해할 수 있는지 잘 모르겠습니다. 나는 DIY '인젝터'로 일하지 않습니다. 나는 [실제 DI 라이브러리] (https : // simpleinjector.org) 또는 [pure DI] (http://blog.ploeh.dk/2014/06/10/pure-di/)를 사용합니다. 응용 프로그램이 커지면 DI 라이브러리가 있으면 순수 DI 또는 DIY에 비해 정말 유용 할 수 있습니다. 데코레이터를 사용하는 것의 큰 장점은 데코레이터가 자신의 의존성을 가질 수 있으며 데코레이터 구현이 차단 라이브러리 또는 AOP 프레임 워크와 같은 외부 도구를 완전히 알지 못한다는 것입니다. – Steven