观察者模式 C 和 Java
Posted
技术标签:
【中文标题】观察者模式 C 和 Java【英文标题】:Observer pattern C and Java 【发布时间】:2012-02-15 21:32:38 【问题描述】:当我使用 2 种编程语言 C 和 Java 时,实现观察者模式的最佳方法是什么?它不一定使用观察者模式,我只需要知道如何实现类似 notifyall() 的方法或函数来通知在一个客户端操作后连接到会话的两个客户端。只需向他们发送字符串消息就足够了。 我有 C 语言的服务器应用程序和 Java swing 的客户端。 服务器上有n个游戏,每个游戏可以连接两个客户端。 服务器和客户端使用带有 Inet 地址的套接字,服务器和客户端有 2 个方法 - 发送、接收。 我意识到: 服务器 - C : - 发送 - 向客户端发送消息(客户端由套接字文件描述符指定) - 接收 - 从客户端接收消息(客户端由套接字文件描述符指定) 客户端 - 在 Java 中 - 发送 - 向服务器发送消息(服务器由套接字文件描述符指定) - 接收 - 从服务器接收消息(服务器由套接字文件描述符指定) 服务器在 localhost 127.0.0.1 和端口上运行,例如 10000 客户也是。我将客户端连接到服务器地址 127.0.0.1,端口 10000。
消息是简单的字符串,例如“Hello world\n” 1.运行服务器,服务器等待消息 2. 运行客户端 - 客户端向服务器发送消息 3. 服务器 - 接收消息并将消息发送回客户端 服务器使用 fork 处理新进程中的每个客户端 服务器和客户端写入发送和接收的消息 4.发送消息后的客户端
这是行得通的。
我在java swing中有代表客户端GUI的类,有n个按钮(JButton),例如16个,每个都有图像图标,每个按钮都添加了ActionListener 如果我单击按钮,应该会发生一些事情 - 更改或不更改 ImageIcon。 我正在尝试实现的是类似于观察者的方法
我需要以某种方式在服务器上设置会话:(代表游戏) 游戏1:客户端1,客户端2 游戏 2:客户端 3、客户端 4 游戏 3:客户端 5、客户端 6 等等。 1.我在client1中按下15号按钮,客户端向服务器发送消息,如“client1按下15号按钮” 2. 服务器收到消息,并发送类似“client1 按下按钮 15”的消息给所有在 game1 中连接的客户端(client1,client2)。在服务器消息中也会出现类似“更改按钮 15 的 ImageIcon”之类的内容。 第 2 点应该是函数 notifyAll 有什么好的和简单的方法来实现它?
感谢您的建议。
【问题讨论】:
【参考方案1】:您只需要“通知”客户的“列表”
“列表”可以像一组主机名或 IP 地址一样简单。
您的“事件”处理程序只会遍历列表,依次向每个主机发送消息。
【讨论】:
以上是关于观察者模式 C 和 Java的主要内容,如果未能解决你的问题,请参考以下文章
JAVA SCRIPT设计模式--行为型--设计模式之Observer观察者模式(19)
JAVA SCRIPT设计模式--行为型--设计模式之Observer观察者模式(19)