2017-04-09 8 views
3

트윈 디자인 패턴을 연구하고있었습니다. 나는 개념을 가지고있다. 그러나 그것이 구현에 왔을 때 나는 자식 클래스들이 어떻게 서로 통신 하는지를 완전히 이해할 수 없었다. 나는 자바에서 '볼 게임'예제를 발견했지만 여전히 그 점을 이해하지 못했습니다.트윈 디자인 패턴으로 하위 클래스가 어떻게 통신합니까?

하위 클래스가 통신하거나 메시지를 교환하는 방법을 설명 할 수 있습니까? 자바에서 하나 또는 두 개의 간단한 예제를 제공 할 수 있다면 도움이 될 것입니다.

Image of twin design pattern structure

답변

0

두 차일 클래스는 모두 서로의 객체를 구성으로 서로 통신 할 수 있습니다.

은의이 이해하기 Wikipedia article "Twin pattern"에서 다음의 예를 보자 :

public class BallItem extends GameItem { 
    BallThread twin; 

    int radius; int dx, dy; 
    boolean suspended; 

    public void draw(){ 
     board.getGraphics().drawOval(posX-radius, posY-radius,2*radius,2*radius); 
    } 

    public void move() { 
     posX += dx; posY += dy; 
    } 

    public void click() { 
     if (suspended) twin.resume(); else twin.suspend(); 
     suspended = ! suspended; 
    } 

    public boolean intersects (GameItem other) { 
     if (other instanceof Wall) 
     return posX - radius <= other.posX && other.posX <= posX + radius || posY - radius <= other.posY && other.posY <= posY + radius; 

     else return false; 
    } 

    public void collideWith (GameItem other) { 
     Wall wall = (Wall) other; 
     if (wall.isVertical) dx = - dx; else dy = - dy; 
    } 
} 


public class BallThread extends Thread { 
    BallItem twin; 
    public void run() { 
    while (true) { 
     twin.draw(); /*erase*/ twin.move(); twin.draw(); 
    } 
    } 
} 

이의이 BallThread이 스레드와 BallItem 모두 확장 싶다고 가정하자. 그러나 볼 때 BallThread는 Thread를 상속 받았으며 BallItem 클래스를 구성했습니다. BallItem 클래스를 참조하거나 BallItem 클래스를 작성함으로써 BallThread는 BallItem 클래스의 모든 메서드를 호출 할 수 있습니다.

따라서 BallThread는 Thread 클래스를 상속하고 BallItem 클래스를 구성하여 다중 상속을 구현하고 있습니다.