Action
클래스 가있는 UI 코드를 작성하고 있습니다.
public class MyAction extends Action {
public MyAction() {
setText("My Action Text");
setToolTip("My Action Tool tip");
setImage("Some Image");
}
}
이 Action 클래스를 만들 때 Action
클래스를 사용자 정의 할 수없는 것으로 가정했습니다 (어떤 의미에서 텍스트, 툴팁 또는 이미지는 코드의 어느 곳에서도 변경되지 않습니다). 이제 코드의 특정 위치에서 작업 텍스트를 변경해야합니다. 그래서 동료가 생성자에서 하드 코딩 된 작업 텍스트를 제거하고 인수로 수락하여 모든 사람이 작업 텍스트를 전달하도록 제안했습니다. 아래 코드와 같은 것-
public class MyAction extends Action {
public MyAction(String actionText) {
setText(actionText);
setTooltip("My Action tool tip");
setImage("My Image");
}
}
그러나 그는 setText()
메소드가 기본 클래스에 속하기 때문에 액션 인스턴스가 생성 될 때마다 액션 텍스트를 유연하게 전달하는 데 사용될 수 있다고 생각합니다 . 이렇게하면 기존 MyAction
클래스 를 변경할 필요가 없습니다 . 그의 코드는 다음과 같습니다.
MyAction action = new MyAction(); //this creates action instance with the hardcoded text
action.setText("User required new action text"); //overwrite the existing text.
그것이 문제를 해결하는 올바른 방법인지 확실하지 않습니다. 나는 위에서 언급 한 경우에 사용자가 어쨌든 텍스트를 변경할 것이라고 생각합니다. 그래서 액션을 구성하는 동안 그를 강요하지 않습니까? 원래 코드에서 볼 수있는 유일한 이점은 사용자가 텍스트 설정에 대해 많이 생각하지 않고도 Action 클래스를 만들 수 있다는 것입니다.