关于java的问题

java 设计模式
场景: 一宿舍四人去上课,A在听课,B在睡觉,C在玩手机,D在吃东西,
老师androidshu在讲课;四人约定好,若老师走下讲台,则A通知B、C、D。
要求:利用观察者模式实现此功能,写出java代码
说明:结果显示类似于:
老师下来了,B, 不睡觉了,听课
老师下来了,C, 不玩手机了,听课
老师下来了,D, 不吃东西了,听课
其中A、B、C、D均是一个类,继承自class Student, 老师androidshu 也为一个类继承自
class Teacher
(提示:若时间足够,优化Subject与Observer,可考虑利用接口对代码解耦。)

package com.demo;

/**
* @author dongbin.yu
* @version 1.0.0
* @since 2015/10/12
*/
public abstract class Student {

protected void takeLesson(){

}
}

package com.demo;

import java.util.ArrayList;
import java.util.List;

/**
* @author dongbin.yu
* @version 1.0.0
* @since 2015/10/12
*/
public class StudentA extends Student {

private List<Student> students = new ArrayList<Student>();

public void add(Student student){
students.add(student);
}

public void del(Student student){
students.remove(student);
}

public void update(){
for (Student student : students) {
student.takeLesson();
}
}

}

package com.demo;

/**
* @author dongbin.yu
* @version 1.0.0
* @since 2015/10/12
*/
public class StudentB extends Student {

public void sleep(){

}
}

package com.demo;

/**
* @author dongbin.yu
* @version 1.0.0
* @since 2015/10/12
*/
public class StudentC extends Student {

public void playPhone(){

}
}

package com.demo;

/**
* @author dongbin.yu
* @version 1.0.0
* @since 2015/10/12
*/
public class StudentD extends Student {

public void eatSomething(){

}
}

package com.demo;

/**
* @author dongbin.yu
* @version 1.0.0
* @since 2015/10/12
*/
public abstract class Teacher {

public void teach(){

}
}

package com.demo;

/**
* @author dongbin.yu
* @version 1.0.0
* @since 2015/10/12
*/
public class Androidshu extends Teacher {

private StudentA student;

public void getOff(){
student.update();
}

public void setStudent(StudentA student) {
this.student = student;
}
}

import com.demo.*;

public class Main {

public static void main(String[] args) {

Androidshu androidshu = new Androidshu();
StudentA studentA = new StudentA();
studentA.add(new StudentB());
studentA.add(new StudentC());
studentA.add(new StudentD());

androidshu.getOff();

}
}

main方法里面你稍微按照你需求改一下。
温馨提示:答案为网友推荐,仅供参考