나는 아래와 같이 spec translator
을가집니다.메소드 매개 변수에 대한 데이터 캡슐화 고려 사항 (종속성 삽입)
//all specifications implement this base class
public abstract class SpecBase
{
public abstract void Translate(IContext context);
}
//spec translator implementation
public interface ISpecTranslator
{
void Translate(IContext context);
}
SpecTranslator
생성자의 종속성을 주입해야합니다. 나는 직관력을 표현하는 두 가지 방법이 있습니다.
솔루션 1
public class SpecTranslator:ISpecTranslator
{
IList<SpecBase> specs;
public SpecTranslator(IList<SpecBase> specs)
{
this.specs = specs;
}
}
지금 IList<SpecBase>
작품을 사용하여주의,하지만 솔루션이 더 많은 보호 기능을 제공 보인다하시기 바랍니다.
용액 2 : 생성자 의존성 주입을 사용할 때
public class SpecTranslator:ISpecTranslator
{
ISpec spec;
public SpecTranslator(ISpec spec)
{
this.spec = spec;
}
}
public interface ISpec
{
IList<SpecBase> specs {get;}
}
그러나 ISpec
의 구현은 동일한 문제가있다.
이 두 가지 해결책 또는 다른 해결책에 대한 장단점에 대한 아이디어가 있습니까?
감사합니다. 도움이됩니다. 나는 그것을 좋아한다. – Pingpong