Java Graphics2D 클래스를 상속받는 클래스를 만든 후 system.out을 사용해서 호출되는 메소드와 인자를 출력하면 됩니다. 이 때 주의할 점은 다음과 같습니다.
1. 메소드의 괄호를 제대로 닫았는지 확인한다~
public class TestGraphics extends Graphics2D{
...
public void translate(int x, int y) {
System.out.println("g2.translate(" + x + ", " + y + ");");
g.translate(x, y);
}
...
}
2. flat가 인자로 들어온 경우에 주의해서 다시 써준다.
System.out.println("g2.draw(new Line2D.Float(" + l.x1 + "f, " + l.x2 + "f, " + l.y1 + "f, " + l.y2 + "f));");
3. GeneralPath 같은 클래스의 경우 저장된 Point를 얻어오기 힘들기 때문에 새로 Wrapping하는 클래스를 또 만든다(ㅡㅡ;; )
※ 주의할 점: 이러한 잔머리로 얻은 출력 코드는 최적화 되지 않기 때문에 리팩토링이 반듯이 필요합니다. (뽑아낸 코드만 대략 4,000줄이 넘군요. ㅋㅋ)
※ 만들 때 개발자의 편리함만 추구하지 말고, 성능도 고려해서 만들자!!!!
How about using AOP?
답글삭제Hm~ ^^. It's a good idea~
답글삭제Proxy 클레스를 사용하면 100줄 이하로 만들 수 있지 않을까요? ㅎㅎ
답글삭제abstract class 라 안되는 군요. ㅡ,.ㅡ
답글삭제넵.. GeneralPath의 경우 final이기도 하구요 ^^
답글삭제