儿童课如何在Twin Design Pattern中进行交流?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了儿童课如何在Twin Design Pattern中进行交流?相关的知识,希望对你有一定的参考价值。
我正在研究Twin设计模式。我得到了这个概念,但是当涉及到实现时,我无法完全理解子类如何相互通信。我在java中发现了一个'球游戏'的例子,我仍然无法从中找到答案。
你能解释一下子课如何沟通或交换信息吗?如果您可以在java中提供一个或两个简单示例,将会很有帮助。
答案
两个子类能够彼此通信,因为它们都构成彼此的对象。
让我们从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想要扩展Thread和BallItem。但是如果你看到,BallThread继承了Thread并且已经组成了一个BallItem类。通过引用BallItem类(或组成BallItem类),BallThread将能够调用BallItem类的所有方法。
因此,BallThread通过继承Thread类和组成BallItem类来实现多重继承。
以上是关于儿童课如何在Twin Design Pattern中进行交流?的主要内容,如果未能解决你的问题,请参考以下文章
[Design Pattern] Adapter Design Pattern
[Design Pattern] Filter Pattern 简单案例
[Design Pattern] Command Pattern 简单案例