2014-01-10 3 views
1

I가 여러 클래스 모든 인터페이스 구현 : 그 예를 몇 가지 상황을 기반으로 만든다른 클래스를 생성하는 클래스의 이름을 지정하는 방법은 무엇입니까?

interface ISample 
    { 
    } 

    class A:ISample 
    { 
    } 
    class B:ISample 
    { 
    } 
    class C:ISample 
    { 
    } 

및 다른 클래스 :

class CreateISample 
    { 
     ISample Create(string situation) 
     { 
      switch(situation) 
      { 
       case "create A": 
        return new A(); 
       case "Create B": 
        return new B(); 
       case "Create C": 
        return new C(); 
       } 
     } 
    } 

이 클래스의 가장 좋은 이름은 무엇입니까?

같은 그때가, ISample이 좋지 않다 만들기 :

두 이름의 일부로 만들기가
CreateISample.Create("Create A"); 

. 또한 CreateISample은 (예를 들어 모든 인스턴스와 관련된 상수 값을 보유하거나 생성 된 인스턴스 목록을 보유하는 등) 다른 작업을 수행 할 수 있습니다. 그렇다면 CreateISample은 좋은 이름이 아닙니다.

이에 대한 표준이 있습니까? 나는 디자인 패턴에 관한 책을 읽었으며이 팩토리 패턴에 적합한 이름을 제안했음을 기억합니다.

+8

SampleFactory로 이름을 지정하고 http://codereview.stackexchange.com 또는 http://programmers.stackexchange.com으로 이동하는 질문은 무엇입니까? –

+1

나는 그것을 Bob (tgif :)라고 부른다. –

+0

'GenerateISample'은 어떨까? – Sean

답변

5

당신이 공장 패턴 http://en.wikipedia.org/wiki/Factory_method_pattern

을 설명하는 것은 일반적으로 우리가 사용하는 규칙은

SampleFactory이다 그러나 그것을 overthink하지 않습니다. 샘플에서 이와 같은 이름을 만드는 것은 정말 어렵습니다. 예를 들어, 대부분의 사람들은 모양이 정사각형임을 잘 알고 있습니다. 그래서

ShapeFactory.Create("Square"); 

은 많은 의미가 있습니다. ISample이 실제로 어떤 종류인지 알아보기 위해 문제를 살펴보십시오. 비즈니스/문제 측면에서 이해가된다면 문제를 이해하는 다른 프로그래머들도 알아낼 수 있습니다.

+0

기본적으로 공장을 사용하는 것이 좋습니다. 정적 클래스 또는 일반 클래스 여야합니까? – mans

관련 문제