2013-05-24 3 views
0

팩토리 패턴을 사용하는 코드베이스에서 추상 클래스는 멤버 메소드의 인수로 인스턴스화됩니다. 추상 클래스를 인스턴스화 할 수없는 경우이 패턴을 어떻게 사용합니까? 그렇게하는 것의 이점이 있습니까? 이 이후멤버 메소드에서 추상 클래스의 인스턴스화

import java.io.IOException; 
public abstract class abstractClass { 

public void member_method(abstractClass t, int i) throws IOException { 
// Do something 
} 

} 
+5

여러분은 abstractClass의 서브 클래스를 인스턴스화 할 수 있습니다 – Crisfole

+1

여기에 인스턴스화가 없습니다. 내가 뭘 놓치고 있니? –

답변

0

당신이 member_method에 전달 된 인스턴스가 this 같은 인스턴스가 아니라는 것을 가정해야 static 방법이 아닙니다.

분명히이 클래스의 두 인스턴스 ab을 만들 수 있습니다 (즉, 구체적인 하위 클래스 만들기). 이 모든 메서드는 사용자가 수행 할 수 있다고 말합니다. a.member_method(b);

1

제공된 코드 예제는 실제로 팩터 리 같은 동작을 의미하지 않습니다. 이 클래스가 추상적이라는 사실은 그다지 관련성이 없습니다. 여기에 귀하의 예를 좀 더 구체적인 예를 구현 한 것입니다 :

public abstract class MyString { 
    private String data; 

    public MyString(String initialValue){ 
     data = initialValue; 
    } 

    public void append(MyString toAppend, int appendCount){ 
     for(int i = 0; i < appendCount; i ++){ 
      data = data + toAppend.data; 
     } 
    } 
    public String toString(){ 
     return data; 
    } 
    public abstract notRelevantMethod(); 

} 

이 클래스 Append 메서드 (나는 외모는 위의 예처럼 alot을 희망), 당신 '당신이 방법으로 MyString에의 다른 인스턴스를 전달할 수 있습니다 MyString을 다시 호출합니다. 예제에서 append 메서드는 MyString에 정의 된 추상 메서드를 사용하지 않지만 그렇게 할 수는 있습니다. 만약 그렇다면, 일반적으로 '템플릿'프로그래밍 패턴을 따르고 있습니다. 그러나 필자는 템플릿을 사용하고 추상 형식의 인수를 취한 좋은 예를 생각할 수 없었다.

관련 문제