2010-02-27 3 views
1

내 응용 프로그램의 파일 저장 부분을 유연성있게 디자인하여 S3 또는 웹 서버의 하드 드라이브에 파일을 저장할 수 있습니다.이것은 공장 패턴에있어 완벽한 문제입니까?

또한 사용자 단위로 유연하게 사용하기를 원합니다. 따라서 사용자 설정에서 파일을 S3 또는 서버 파일 시스템에 저장할지 여부를 선택할 수 있습니다.

나는이 같은 것을 생각하고이 메이크업 감각을합니까

public static IFileStorage Instance(UserSettings setting) 
{ 
    if(setting == UserSettings.S3) 
     return new S3FileStorage(); 
} 

:

IFileStorage fs = FileStorageFactory.Instance(userSettings); 

가 그럼 난과 같은 방법을 것? (나는 C# 프로그래머이지만 Java에서이 작업을 수행 할 것입니다.)

저는 Spring을 사용하고 있습니다.하지만 사용자별로 구현이 변경되므로 DI는 여기에서 사용되지 않을 것이라고 생각합니다.

+4

좋아, 당신은 C# 개발자라고하지만, 제발, 자바 코드를 작성할 때 자바 코드 규칙을 사용하십시오. 대문자 메서드 이름과 인터페이스의 I- 접두어를 사용할 수 없습니다. – whiskeysierra

답변

1

예. 그건 맞는 것 같습니다. 당신은 너무 오랫동안 자신의 요구 사항은 프로그램을 통해 중간 변경하지 않는 한, 그 공장은 적절한 사용자에게 클래스의 특정 인스턴스를 반환하고

+0

좋은 지적이지만, 전략은 좀 더 깨끗하다고 ​​생각합니다. – Blankman

+0

전략은 * 동적 * 행동 변화를 제공합니다. 그 능력이 필요한지 잘 모르겠습니다. –

2

(그렇지 않으면 나는 strategy 패턴을 권 해드립니다) 공장 및 의존성 주입은 상호 배타적이지 않습니다. 스프링은 콩을 생산하는 이른바 factory-method을 가지고있다. 인수를 팩토리 메소드에 전달할 수 있으며, 정적이거나 비 정적 일 수 있습니다.