2012-07-20 2 views
0

이 라이브러리를 사용하고 있으며 일부 수퍼 클래스에서 일부 메소드를 재정의해야했습니다. 지금 내가해야 할 일은 필요한 클래스를 확장하고 슈퍼 클래스에서 재정의해야하는 메소드를 다시 정의하는 것입니다. 여러 클래스가 같은 슈퍼 클래스를 확장하고 나는 모든 하위 클래스가 같은 오버라이드 (override) 방법을 사용하고자 할 때 분명히라이브러리의 클래스 -Hararny 중간에 수퍼 클래스를 확장합니다.

class A { ... } 

class B extends A { ... } 

class C extends A { ... } 

class myD extends B { 

    protected void overriddenAfunction() { ... } 

} 

이 좋지 않다 (같은 C는 (overridenAFunction 같은 정의를해야하는 경우)).

예쁜 디자인 패턴이나 방법이 있습니까? 당신이 다음과 같이 할 수 있다고 상상하고 있습니다.

그러나 그렇다면 B와 C의 모든 방법을 사용해야합니다.

더 좋은 방법이나 해결책이 있습니까? 정말 최고의 솔루션이라고 생각하지만 라이브러리를 다시 포장하지 않으려 고합니다.

나는 또한 B와 C의 사본을 만들어 myD가 A를 확장하는 동안 myD를 확장 할 수 있다고 생각한다.이 라이브러리에는 사용 가능한 모든 소스 파일이 있으므로이 작업을 수행 할 수있다.

답변

0

BC에서 새로운 기능을 활용할 수있는 방법으로 A을 재정의 할 방법이 없습니다. 당신은 내가 볼 수있는 두 가지 옵션이 있습니다, 당신은 둘 다 언급 :

  • 재 작성 A
  • MyDA을 확장하고 대신 MyD을 확장 BC의 복사본을 만들어 보자 라이브러리를 재 포장.
+0

아마도 상황을 설명하는 일을 잘못했을 것입니다. 저는 JFreeChart (차트 그리기를위한 라이브러리)와 함께 작업하고 있습니다. Axes의 틱이 어떻게 그려지는지를 제어하는 ​​함수가있는 NumberAxis (A) 클래스가 하나 있습니다. 그런 다음 클래스를 확장하는 DateAxis (B) 및 SymbolAxis (C) 클래스가 있습니다. 이러한 클래스에는 레이블의 형식 설정과 같은 특정 기능이 포함되어 있습니다. DateAxis의 메서드를 재정의하는 효율적인 방법은 DateAxis와 SymbolAxis에서 모두 사용할 수 있도록하려는 것입니다. – user1540134

관련 문제