상태 모드(if/else 제거)
public interface TvState {
public void turnUp();
public void turnDown();
public void nextChannel();
public void prevCHannel();
}
public interface PowerState {
public void powerON();
public void powerOFF();
}
public class TVPowerONState implements TvState {
@Override
public void turnUp() {
System.out.println(" ");
}
@Override
public void turnDown() {
System.out.println(" ");
}
@Override
public void nextChannel() {
System.out.println(" ");
}
@Override
public void prevCHannel() {
System.out.println(" ");
}
}
public class TVPowerOFFState implements TvState {
@Override
public void turnUp() {
}
@Override
public void turnDown() {
}
@Override
public void nextChannel() {
}
@Override
public void prevCHannel() {
}
}
public class Controller implements PowerState {
public TvState mTvState;
public void setmTvState(TvState mTvState) {
this.mTvState = mTvState;
}
@Override
public void powerON() {
setmTvState(new TVPowerONState());
System.out.println(" !");
}
@Override
public void powerOFF() {
setmTvState(new TVPowerOFFState());
System.out.println(" !");
}
public void nextChannel() {
mTvState.nextChannel();
}
public void prevChanner() {
mTvState.prevCHannel();
}
public void trunUp() {
mTvState.turnUp();
}
public void trunDown() {
mTvState.turnDown();
}
}
만약 오류가 있다면 리모컨이라면 리모컨을 켜고 끄는 두 가지 상태를 바탕으로 하는 것이라고 지적해 주십시오.그러므로 PowerState 인터페이스를 실현하고 컴퓨터를 켜고 끄는 두 가지 방법을 실현해야 한다.근데 우리 기본 조작은 TVSatate 인터페이스에 있잖아.어떡하지???문제가 크지 않고 직접 인터페이스를 향하다.인터페이스를 대상으로 들어오고 전체적인 mTVState, 백핸드가 set 방법이다.이렇게 하면 파워온 () 방법을 실행할 때 set (new TVPoweron State ().전원을 끄는 것도 이치에 맞다.이렇게 mTVState는 set 방법을 통해 기본 조작(켜기, 끄기, 다음 채널, 이전 채널, 볼륨 높이기, 볼륨 낮추기) 방법을 얻을 수 있다.그리고 방법을 실현하면 돼, so easy.
public class MyClass {
public static void main(String args[]) {
Controller controller = new Controller();
controller.powerON();
controller.trunUp();
controller.nextChannel();
controller.prevChanner();
controller.trunDown();
controller.powerOFF();
controller.trunDown();// 。
}
}
디버깅 결과: 켜졌어!볼륨 높여. 다음 채널. 이전 채널. 볼륨 줄여. 꺼졌어!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.