가 나는 명령을 구성 할이 개 기본 방법이있는 인터페이스를했습니다 I가 실행하는 것이 자바에 도입 된 정적 및 기본 방법의 가능성을 탐구하고 있습니다
서버를 통해 ssh를 통해 원격으로 몇 가지 간단한 작업을 수행 할 수 있습니다. 마우스를 움직이려면 두 개의 인수가 필요합니다 : 마우스의 x와 y 위치.
public interface Robot {
default String moveMouse(int x, int y) {
return constructCmd("java -jar move_mouse.jar " + x + " " + y);
}
default String clickLeft() {
return constructCmd("java -jar click_left.jar");
}
static String constructCmd(String cmd) {
return "export DISPLAY=:1.0\n" +
"cd Desktop\n" +
cmd;
}
}
값이 사전에 내가 강력하게 그렇게도 그러나 그 열거 값의 수백 또는 수천을 포함하는 것이 무엇 인터페이스를 사용 하나에 모든 열거 형을 결합 수없는, 여러 열거 형을했습니다 그리고 그것이 어느 정도 조직 유지하려면 , 그래서 나는 여러 열거 형에서 영속적 인 것을 나눴다.
모든 enum이 동일한 메소드를 공유하기를 원하기 때문에 인터페이스의 기본 메소드를 제공 할 것이라고 생각했습니다.
public enum Field implements Robot {
AGE_FIELD(778, 232),
NAME_FIELD(662, 280);
public int x;
public int y;
Field(int x, int y) {
this.x = x;
this.y = y;
}
}
그래서 문자열로 명령을받을 수 있습니다
Field.AGE_FIELD.clickLeft();
Field.AGE_FIELD.moveMouse(Field.AGE_FIELD.x, Field.AGE_FIELD.y);
그러나 moveMouse 나에게 정말 나쁜보고 나는 기본적으로 열거의 값을 사용하는 것이 어떻게 든 할 수 있어야한다고 생각합니다.
누구나 이러한 문제에 대한 좋은 해결책이 있습니까?
이것은 개념적인 문제인 것처럼 보입니다. 당신이 원하는 것은'void moveMouse()','int getMouseTargetX()'와'int getMouseTargetY()'메소드를 가진 인터페이스이다. 현재 디자인은 특정 x 및 y 좌표를 묻습니다. 나의 제안은 객체가 몇 가지 속성을 가지고 있다고 가정하고, x와 y 좌표를 정의한다. 내 제안은 대체 시스템보다 기존 시스템의 확장 기능에 가깝습니다. 실제로 마우스를 움직이는 구성 요소를 호출하는 구성 요소가 인터페이스를 사용하는 반면 구성 요소는 마우스를 실제로 이동하는 데 인터페이스가 사용됩니다. – Turing85