java - 关联关系中调用父方法

标签 java oop design-patterns

抱歉我的标题令人困惑,但我不知道更好。 我有两个类(class):My classes

第一个类(称为 MainClass)创建一个包含 Socket 的 GUI。当从 Socket 类接收到任何数据时,onReceived() 将被调用。因此,在这个 onReceived() 方法中,我想要一种将消息发送回 MainClass 的方法,以便 MainClass 可以知道位置已更改并调用 setPostion() 。

那么执行此操作的正确方法是什么(如有必要,请纠正我的模型以获得更好的实践)。谢谢

最佳答案

您可以执行以下操作;

定义监听器接口(interface):

public interface MyListener(){

    public void doNotify(String message);

}

Socket 类(有一种方法来添加在 onRecieve() 上通知的监听器):

public class SocketClass {

    private List<MyListener> listeners = new ArrayList<MyListener>();

    public void addListener(MyListener listener) {
        listeners.add(listener);
    }

    public void onRecieve(){
        /* your code*/
        for (MyListener l : listeners)
            l.doNotify("Socket has recieved something ;P");
    }

}

Gui 类有一个传递监听器的方法:

public class GuiClass() {

    SocketClass s = new SocketClass();

    public void addListener(MyListener listener) {
        s.addListener(listener);
    }

}

最后是主类(实现监听器接口(interface)并将其自身添加到 GuiClass 作为监听器):

public class MainClass implements MyListener {

    public static void main(String[] args) 
    {
        GuiClass g =  new GuiClass();
        g.addListener(this);

    }

    public void doNotify(String message) {
        System.out.println(message);
        setPostition();
    }

    private void setPosition()
        /* your code here */
    }

}

THIS 也是一个很好的例子.

祝你好运,并致以问候

关于java - 关联关系中调用父方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24819334/

相关文章:

java - 我可以为 OpenGL 中的静态对象推送一次矩阵吗?

design-patterns - 什么时候不使用 IoC 和 DI?

java - 如何实现 CRUD 操作的命令模式

c# - C# 的并行编程模式?

java - 垃圾收集孤立对象岛

java - 尝试将参数(参数)(args[])实现为静态 double

java.sql.SQLException : Invalid handle

php - Codeigniter 使用开放库 API 显示图像

oop - OCaml 结构类型和列表

javascript - 使用方法扩展类是一个好习惯吗?