오늘부터는 응용 프로그램 설계/구조화 방법에 대해 자세히 알기를 원합니다. 그래서 저는이 패턴에 대해 약간의 의문이있는 외관 패턴에 관한 것을 읽었습니다. 모두의 첫째, 내 프로젝트에 대한 짧은 소개 :외관 디자인 패턴을 사용하는 방법
내 프로젝트 내 프로젝트는 멀티미디어 응용 프로그램입니다. 한쪽에는 다른보기 (예 : Musicscreen, Videoscreen ...)가있는 MultimediaApllication이 있습니다. 반대쪽에는 응용 프로그램을 제어 할 수있는 IRController가 있습니다. MultimediaApplication은 IRController가 없어도 KeyEvents를 듣기 때문에 작동합니다 (예 : 'enter'키를 누름). IRController 조금 자신의 시스템과 같다 : IRController
키가 ircontroller
public enum
/*
Example Values
*/
VOL_UP(new MediaVolumeUpKey()),
VOL_DOWN(new MediaVolumeDownKey()),
MUTE(new MediaMuteKey());
private byte bytes[];// Repräsentiert den Key
private Key k;
private Keys(Key key){
this.k = key;
}
public static Key getKey(byte[] bytes){
for(Keys key: values()){
if(Arrays.equals(key.getBytes(), bytes)){
return key.k;
}
}
return null;
}
public byte[] getBytes(){
return this.bytes;
}
public Key getKey(){
return this.k;
}
}
에 누를 경우이 열거 형은 키 객체를 작성해,이는 abstarct에서 키 클래스입니다. 모든 키가 키를 수반합니다.
public abstract class Key {
private byte[] bytes;
protected Key(int...bytes){//int... als argumente für übersichtlichen Code
byte[] temp = new byte[bytes.length];
for(int i =0; i<bytes.length;i++) temp[i] = bytes[i];
this.bytes = temp;
}
public byte[] getBytes(){return bytes;}
public void abstract call();
}
public static Key getKey(byte[] bytes){
for(Keys key: values()){
if(Arrays.equals(key.getBytes(), bytes)){
return key.k;
}
}
return null;
}
public byte[] getBytes(){
return this.bytes;
}
public Key getKey(){
return this.k;
}
이제 IR 컨트롤러를 변경하면 키의 바이트 코드 만 변경하면됩니다.
문제는 키 클래스와 멀티미디어 응용 프로그램 간의 통신을 알고 있습니다. 모든 것이 느슨하게 결합 되었기 때문에 멀티미디어 응용 프로그램의 외관을 만드는 것이 좋습니다. 따라서 핵심 클래스는 facade의 play() stop() pause()와() 메소드를 호출 할 때 어떻게 행동할지 결정할 수 있습니다.
내 아이디어를 구현할 수 있습니까? 아니면 물어 보는 것이 좋을까요? 외관 패턴을 올바르게 이해해야합니까? 당신의 도움에 대한 감사합니다 :)
답장을 보내 주셔서 감사합니다 :)하지만 ... "하위 시스템을보다 쉽게 사용할 수 있도록 상위 수준 구현을 정의하는 데 사용할 수 있다고 생각합니까?" – Chris
업데이트 된 답변보기 – ekostadinov