특정 화면 위치에 그림을 그리는 GUI 요소를 사용해야합니다. 사용자가이 그림을 선택하면 그림 주위에 테두리가 그려집니다. 이제 사용자에게 특정 값의 그림을 식별하는 테두리를 추가하고자합니다.GUI 요소의 도면 분할하기
요소가 선택되면 자신의 내부 상태를보고 요소를 그리는 방법을 결정합니다.
graphic.drawImage(icon, x, y, null);
if (selected) {
drawBorder();
}
이 드로잉 방법에 다른 것을 추가 할 생각이 없습니다. 요소의 동작을 상속하고 draw 메서드를 덮어 쓰는 새 클래스를 만들려고했지만 모든 상속 된 클래스에서 선택한 코드 전체를 복제한다는 의미입니다. 하위 클래스를 만들지 않고이 문제를 해결할 수 있습니까?
나는 당신이 옳다고 생각합니다. 두 개 또는 세 개의 다른 동작에 대해서만 서브 클래 싱을 수행하는 것은 오버 헤드이며, 나중에 변경하면 더 고급 접근 방식으로 변경할 수 있습니다. 지금은 if else를 스위치로 바꾸고 열거 형으로 선택된 부울을 선택하여 드로잉에 어떤 동작을 사용해야 하는지를 알려줍니다. – Janusz
꽤 현명한 아이디어처럼 들립니다. 관리하기가 너무 어려워지면 switch 문을 쉽게 리팩토링하여 고급 OO 접근 방식을 사용할 수 있습니다. –