/**
* Created by xingjie on 2017/1/10.
*/
public interface Student {
void subscribe(Teacher teacher);
void unsubscribe(Teacher teacher);
void notifycome();
void notifyleave();
String getName();
}
public interface Student {
void subscribe(Teacher teacher);
void unsubscribe(Teacher teacher);
void notifycome();
void notifyleave();
String getName();
}
public class Jim implements Student {
Teacher teacher;
String name;
@Override
public void subscribe(Teacher teacher) {
this.teacher = teacher;
teacher.add(this);
}
public Jim(String name) {
this.name = name;
}
@Override
public void notifycome() {
System.out.println(name+"上课");
}
@Override
public void notifyleave() {
System.out.println(name+"下课");
}
@Override
public String getName() {
return name;
}
@Override
public void unsubscribe(Teacher teacher) {
teacher.remove(this);
}
}
public class Lily implements Student {
Teacher teacher;
String name;
@Override
public void subscribe(Teacher teacher) {
this.teacher = teacher;
teacher.add(this);
}
public Lily(String name) {
this.name = name;
}
@Override
public void notifycome() {
System.out.println(name+"上课");
}
@Override
public void notifyleave() {
System.out.println(name+"下课");
}
@Override
public String getName() {
return name;
}
@Override
public void unsubscribe(Teacher teacher) {
teacher.remove(this);
}
}
public class TeacherWang implements Teacher {
List<Student> list = new ArrayList<>();
public TeacherWang() {
System.out.println("TeacherWang build success");
}
@Override
public void add(Student student) {
list.add(student);
System.out.println("welcome " + student.getName());
System.out.println("现在有学生:" + list.size() + "人");
}
@Override
public void come() {
for (Student student :
list) {
student.notifycome();
}
}
@Override
public void leave() {
for (Student student :
list) {
student.notifyleave();
}
}
@Override
public void remove(Student student) {
list.remove(student);
System.out.println("bye "+student.getName());
System.out.println("现在有学生" + list.size()+"人");
}
}
public class Test {
public static void main(String[] args) {
TeacherWang wang = new TeacherWang();
Jim jim = new Jim("Jim");
jim.subscribe(wang);
Lily lily = new Lily("Lily");
lily.subscribe(wang);
wang.come();
wang.leave();
jim.unsubscribe(wang);
wang.come();
wang.leave();
}
}
输出:
TeacherWang build success
welcome Jim
现在有学生:1人
welcome Lily
现在有学生:2人
Jim上课
Lily上课
Jim下课
Lily下课
bye Jim
现在有学生1人
Lily上课
Lily下课