public abstract class ChatMediator {
public abstract void register(ChatClient client);
public abstract void notice(ChatClient client,String message);
}
public class ChatServer extends ChatMediator {
private List<ChatClient> clientList = new ArrayList<>();
@Override
public void notice(ChatClient client, String message) {
for (ChatClient c : clientList) {
if (!client.equals(c)) {
c.receiveMessage(message);
}
}
}
@Override
public void register(ChatClient client) {
if (client != null && !clientList.contains(client)) {
clientList.add(client);
}
}
}
public abstract class ChatClient {
protected ChatMediator mediator;
public ChatClient(ChatMediator mediator){
this.mediator = mediator;
}
public abstract void sendMessage(String message);
public abstract void receiveMessage(String message);
}
public class Andy extends ChatClient {
public Andy(ChatMediator mediator) {
super(mediator);
mediator.register(this);
}
@Override
public void sendMessage(String message) {
System.out.println();
System.out.println("安迪发送一条消息:" + message);
mediator.notice(this, message);
}
@Override
public void receiveMessage(String message) {
System.out.println("安迪收到一条消息:" + message);
}
}
public class Group {
public static void main(String[] args) {
//聊天服务器
ChatServer chatServer = new ChatServer();
//三个小伙伴
Andy andy = new Andy(chatServer);
Ben ben = new Ben(chatServer);
Cat cat = new Cat(chatServer);
System.out.println("=====群聊信息=====");
andy.sendMessage("今晚去看复仇者联盟4吧!");
System.out.println("-----——分割线——-----");
ben.sendMessage("好啊好啊~我期待了很久!");
System.out.println("-----——分割线---——--");
cat.sendMessage("我来负责买票!!!");
}
}