package cn.yang.test.controller;
import java.util.ArrayList;
import java.util.List;
/**观察者模式
* Created by Dev_yang on 2016/2/26.
*/
public class Test {
public static void main(String[] args) {
TVImp tvImp=new TVImp();
tvImp.registUser(new UserImpl("user1"));
tvImp.registUser(new UserImpl("user2"));
tvImp.registUser(new UserImpl("user3"));
tvImp.sendMessage("hello everyone !");
}
}
interface TV{
void registUser(User user);
void removeUser(User user);
void notifyAllUser();
}
class TVImp implements TV{
private List users=new ArrayList<User>();
private String message;
public void sendMessage(String message) {
this.message = message;
notifyAllUser();
}
public void notifyAllUser() {
for (int i = 0; i < users.size(); i++) {
User user= (User) users.get(i);
user.update(message);
}
}
public void registUser(User user) {
users.add(user);
}
public void removeUser(User user) {
int i = users.indexOf(user);
users.remove(i);
}
}
interface User{
void update(String s);
}
class UserImpl implements User{
private String userName;
public UserImpl(String userName) {
this.userName = userName;
}
public void update(String s) {
System.out.println(userName+":receive message from TV----"+s);
}
}
控制台输出结果为:
user1:receive message from TV—-hello everyone !
user2:receive message from TV—-hello everyone !
user3:receive message from TV—-hello everyone !