2 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
您的客戶端代碼或引導(dǎo)代碼需要以某種方式表達(dá)所需的實(shí)現(xiàn)類型。您可以通過以下方式實(shí)現(xiàn)它:
public Interface IReqeust
{
// Some code
}
public class HttpRequest : IRequest
{
// Implementation
}
public class TcpRequest : IRequest
{
// Implementation
}
一種方法可能是提供多種方法。您仍然可以隱藏配置,但一些實(shí)現(xiàn)細(xì)節(jié)會(huì)泄漏到您的客戶端代碼中。
public Interface IRequestFactory
{
IRequest CreateHttpRequest();
IRequest CreateTcpRequest();
}
public class RequestFactory : IRequestFactory
{
// Implementation
}
另一種解決方案是確定在建造工廠時(shí)需要什么。
public Interface IRequestFactory
{
IRequest CreateRequest();
}
public class RequestFactory : IRequestFactory
{
private IConfigReader configReader;
public RequestFactory(IConfigReader configReader)
{
this.configReader = configReader;
}
public IRequest CreateRequest()
{
var currentProtocoll = configReader.GetCurrentProtocoll();
if(currentProtocoll is HTTP)
return new HttpRequest();
else
return new TcpRequest();
}
}
我不會(huì)推薦更多工廠的解決方案。至少不是你到目前為止所寫的。
- 2 回答
- 0 關(guān)注
- 278 瀏覽
添加回答
舉報(bào)