문제

내가 원하는 게임을 만드는 모두 작동합니다 로컬과 온라인.

먼저 생각하게 되었 인터페이스를 만들 수 있는 모든 방법들을 통해 필요한 것입니다드는 위한 비즈니스 로직과는 다음 네트워크 구축하고 지역의 구현입니다.

이 잘 작동하는 요청-응답 메시지입니다.하지만 무엇에 대해 메시지는 이 서버로 보내고,어디로 나는 일부를 업데이트 GUI 컴포넌트(즉JLabels)?

첫 솔루션이었을 구현하는 청취자,각 변경에서 구현됩니다.GUI 를 등록하고 그것을 변경 구성 요소입니다.그러나 전화를 화재 사건에서 비즈니스 로직 보이는 작은 잘못입니다.

에서 나는 오른쪽을 추적하고 있습니까?내가 생각하기 때문에 나지 않습니다.어떤 방법이 있나요?

감사합니다.

참고:클라이언트가 단순한 자바 스윙 GUI.

도움이 되었습니까?

해결책

당신이 무슨 설명이 제공를 유지하는 것을 목표는 모델의 독립적인 프리젠테이션 문제는 것은 좋은 일입니다.이것은 또한 당신 동안 설계,개발 및 유지 관리의 모델은,당신이 할 수 있기 때문에 쓰기에 대한 단위 테스트 기준으로는 특정의 변화 모델에서 발생한 특정 이벤트가 없는 것에 대해 걱정하는 것처럼 보일 수 있었습니다.

그리고 물론,그것은 당신을 자유롭게 서로 다른 GUI 디자인의 다양한 환경에 적합합니다.

키 이벤트에 대한 변경은 상태에서의 모델 대기위한 조치/는 표현에서 프레젠테이션 수준입니다.자 프레젠테이션 층에 처리지/는 방법에 대응하는 모델의 이벤트입니다.

다른 팁

나는 웹 개발을한다는 것을 인정하므로 스윙에 대한 경험이 많지 않습니다.

그러나 나는 항상 접근 방식이 앱을 패키지 /뷰, /모델 및 /컨트롤러로 나누는 것이라고 생각했습니다. 관계는 단방향입니다 : /컨트롤러는 /모델 및 /뷰 모두에 대해 알고 있지만 /컨트롤러 또는 서로의 클래스를 가져 오지 않습니다.

/뷰 레이어 구성 요소는 절대 JFrames가 아닙니다. 그들은 항상 필요에 따라 jframes로 함께 구성 될 수있는 JPanel 또는 다른 적합한 컨테이너 일 것입니다. 각각은 리스너 인터페이스에 대한 참조를 가지고 있고, 생성자에서 초기화되었으며, 이벤트 처리를 위해 이들을 연기합니다.

public class ExamplePanel extends JPanel implements ActionListener
{
    private JButton button;
    private ActionListener buttonListener;

    public ExamplePanel(ActionListener buttonListener)
    {    
        this.button = new JButton("Do Something");
        this.buttonListener = buttonListener;
        this.button.addListener(this.buttonListener);
    }

    public void actionPerformed(ActionEvent e)
    {
        this.buttonListener.actionPerformed(e);
    }
}

이 배열은 종속성 주입과 잘 작동합니다. 이제 컨트롤러가 해당 리스너 인터페이스의 로컬 또는 원격 구현을 사용하여 클라이언트에 전혀 영향을 미치지 않는 방식으로 동작을 변경할 수 있기 때문입니다.

나는 내가 끝까지 그것을 따르지 않았다는 것을 인정할 것이다.

봄 사람들은 풍부한 스윙 클라이언트 모듈을 가지고 있지만 호의적 인 것으로 보인다. 그들은 Blazeds 방향이 부유 한 고객에게 더 나은 선택이라고 결정한 것 같습니다. 그러나 아마도 당신은 그들의 접근 방식에서 몇 가지 디자인 아이디어를 얻을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top