정적 팩토리 패턴을 배포 할 때 종종 분기에 갇히게됩니다. 아래 코드보다 더 깔끔하게 만들 수있는 방법이 있습니까?
private static TestEdition GetCurrentEdition(userconfig config)
{
if (config.Edition == Edition.typea)
{
return new TestEdition3(config);
}
else if (config.Edition == Edition.typeb)
{
return new TestEdition4(config);
}
return new UnsupportedEdition(config);
}
나는 이런 종류의 것을 많이 사용하는 경향이 있습니다.
private static Dictionary<Edition, Func<userconfig, TestEdition>> _factories =
new Dictionary<Edition, Func<userconfig, TestEdition>>()
{
{ Edition.typea, c => new TestEdition3(c) },
{ Edition.typeb, c => new TestEdition4(c) },
}
private static TestEdition GetCurrentEdition(userconfig config)
{
if (_factories.ContainsKey(config.Edition))
{
return _factories[config.Edition](config);
}
return new UnsupportedEdition(config);
}
큰 장점은 Dictionary<Edition, Func<userconfig, TestEdition>>
런타임에를 구성하고 확장 할 수 있다는 것 입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다