현재 ConfigProfile factory라는 클래스가 있고 기본 프로파일, 현재 설정 등을위한 메소드가 있습니다. 이 클래스는 내 프로필 서비스에서 내부적으로 사용됩니다. 나는이 제품을 진정한 공장으로 만들고 우리가 구성하는 각 제품에 대해 적절한 프로필 서비스를 만드는 것이 더 좋을 것이라고 생각했습니다. 이 하나의 제품이지만, 우리는 내가 더 추가해야합니다 의미하는 몇 가지 더있다팩토리 패턴을 사용해야합니까?
public string GetDefaultProfile(string product)
{
if (string.IsNullOrEmpty(product))
{
throw new ArgumentNullException("product");
}
string profile = null;
if (product.Contains("Product 1", StringComparison.CurrentCultureIgnoreCase) ||
product.Contains("product1", StringComparison.CurrentCultureIgnoreCase))
{
profile = Resources.product1DefaultProfile;
}
return profile;
}
경우 각각에 대해 문. 프로필 서비스에는 이미 인터페이스가 있으며 대부분의 프로그램에 사용됩니다. 또한 같은 일을하는 여러 가지 방법이 있습니다. 그렇다면 제품 이름을 기반으로 적절한 프로필 서비스를 반환하는 공장이 더 나은 해결책일까요 아니면 제가 할 수있는 다른 일이 있을까요?
편집 :이 클래스의 간단한 방법 중 하나입니다. 더 복잡한 것은 필요한 장소에서 현재 시스템 설정을 검색하는 것입니다. 모든 제품과 마찬가지로 IIS 설정이 있지만 일부는 테마 지원을 제공하지만 다른 제품은 데이터베이스 구성을 갖습니다.
이름이 키이고 값이 프로필 인지도가 있습니다. 프로파일은 제품마다 어떻게 다릅니 까? 마치 모든 제품에 대해 동일한 역할을하는 것처럼 들릴 수 있습니다. 나는 공장에 대한 필요성을 보지 못했다. – duffymo
다른 섹션도있을 수 있습니다. 첫 번째 제품과 마찬가지로 우리는 IIS와 web.config를 다뤘지만 다른 제품의 경우 테마와 데이터베이스를 추가하는 것을 제외하고는 동일합니다. 각 섹션에는 자체 서비스가 있습니다. 예를 들어 IIS에는 설정을 적용하고 현재 설정을 읽는 자체 서비스 클래스가 있습니다. – twreid
그냥 메모 : 인수가 null이 아닌 경우 메소드가 'ArgumentNullException'을 throw 할 수 있습니다. 단지 비어 있습니다. 비어 있지 않은 빈 인자가 전달되지 않아야한다면'ArgumentException'을 던져야합니다. –