observer demo

本文介绍了一个基于Java实现的聊天室系统,通过观察者模式使管理员可以向所有在线用户发送公告。具体实现了CharRoomManager类作为管理者,负责发送公告;ChatPerson类作为观察者,用于接收并显示公告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

scene:michael and cavin in char room,they can got common messages from manager.

code:
first we need a manager,

 

package observer;

import java.util.Observable;
/**
 * char room manager.
 * @author michael
 */
public class CharRoomManage extends Observable {
	private String gonggao;
	
	public String getGonggao() {
		return gonggao;
	}
	
	public void setGonggao(String gonggao) {
		this.gonggao = gonggao;
		setChanged();
		notifyObservers(gonggao);
	}
}

 this manager class can create a manager to send common messages.

 

second we need the observe persons,

package observer;

import java.util.Observable;
import java.util.Observer;

/**
 * CharPerson,to create chat Person.
 * @author michael
 */
public class ChatPerson implements Observer {
	private String gonggao;
	private String chatPersonName;
	
	public ChatPerson(String chatPersonName) {
		this.chatPersonName=chatPersonName;
	}
	
	public void update(Observable o, Object arg) {
		if(arg instanceof String){
			gonggao=(String)arg;
			System.out.println(chatPersonName+"收到站内消息: "+gonggao);
		}
	}
}

 this class can create as many chat room users as we want.

 

finally we use a main method for test,

package observer;

public class TestMain {
	public static void main(String[] args) {
		//craete a chat room manage
		CharRoomManage manager = new CharRoomManage();
		
		//create two person,those will be observe
		ChatPerson mihcael=new ChatPerson("michael");
		ChatPerson cavin=new ChatPerson("cavin");
		
		//create relation
		manager.addObserver(mihcael);
		manager.addObserver(cavin);
		
		//send commons messages
		manager.setGonggao("请不要乱发消息");
	}
}

 run this the result is:

cavin收到站内消息: 请不要乱发消息
michael收到站内消息: 请不要乱发消息

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值