두 서비스에서 거의 작동하지 않는 Facade 클래스를 만들고 싶습니다. 해당 서비스에 대한 문의는 프록시 클래스가 있습니다.두 서비스가 내부에 있고 종속성 삽입 - 디자인 패턴 방식의 외관이 있습니다.
서비스 당 추상 프록시와 파생 프록시가있는 경우 -이 아키텍처 부분을 어떻게 작성하여 Facade에서의 해결을 피할 수 있습니까?
class Facade
{
private Proxy proxy1;
private Proxy proxy2;
public Facade()
{
//I don't like this part
proxy1 = ...Resolve<Proxy1Type>();
proxy2 = ...Resolve<Proxy2Type>();
}
public void Do()
{
proxy1.Call();
proxy2.Call();
}
}
abstract class Proxy {public void Call();}
class Proxy1Type : Proxy {public void override Call(){}}
class Proxy2Type : Proxy {public void override Call(){}}
이 사례를 해결하기 위해 어떤 디자인 패턴을 사용해야합니까?
편집은 선택적으로 나는이 솔루션에 가야하지만, 여전히 많은 그것을 좋아하지 않아
class Facade
{
private IProxy proxy1;
private IProxy proxy2;
//I feel it's still wrong
public Facade(IProxy1Type p1, IProxy2Type p2)
{
proxy1 = p1;
proxy2 = p2;
}
public void Do()
{
proxy1.Call();
proxy2.Call();
}
}
interface IProxy { void Call();}
interface IProxy1Type : IProxy{}
interface IProxy2Type : IProxy {}
class Proxy1Type : IProxy1Type { public void Call() { } }
class Proxy2Type : IProxy2Type { public void Call() { } }