java作业-代理设计模式和异常处理
假设教学过程需要任课教师和助教参与,教师的教学工作是上课,助教的教学工作是批改作业和收作业,完成的教学过程包括:助教先批改完所有的作业任课教师才会上课,上完课后助教要收取所有学生的作业。具体要求:
1、用代理模式实现(参考书上上网的例子),提示:定义一个教师接口(里面包含一个上课的抽象方法),任课教师实现该接口,模拟上课,助教是代理,也实现上课这个方法,但同时要扩展批改作业和收取作业这两个方法。
2、设计两个异常类,一个是助教未批改完作业,则抛出未批改作业异常,任课教师停止上课;一个是收取作业时,如果有未交作业的同学,则抛出未交作业异常。
代码挺容易懂的,但是就我而言,对代理类的运用总感觉不对劲。(今后还会修改)
新版本在下一篇
https://blog.csdn.net/hhuhgfhggy/article/details/115494660
module Teacher {
}
接口类
package teacher;
public interface Tea {
void Class();
}
教师类
package teacher;
public class MajorTea implements Tea {
public void Class() {
System.out.println("开始上课");
}
}
助教类
package teacher;
public class Minortea implements Tea {
public void Class() {
System.out.println("辅助上课");
}
public void homework_correcting() {
}
public void Collect_homework() {
}
}
代理类
package teacher;
public class Proxy implements Tea{
private Tea tea;
public Proxy(Tea tea) {
this.tea=tea;
}
public void homework_correcting() {
System.out.println("作业已经批改完");
}
public void Collect_homework() {
System.out.println("开始收取作业");
}
public void Class() {
this.tea.Class();
if(tea instanceof Minortea) {
this.homework_correcting();
this.Collect_homework();
}
}
}
自定义异常
package teacher;
public class Myexception extends Exception{
public Myexception(String s) {
super(s);
}
}
测试类
package teacher;
import java.util.Scanner;
public class Text {
public static void main(String[] args) {
Tea x=null;
Scanner sc=new Scanner(System.in);
int xx=1;
while(xx!=0) {
int tt;
int t;
System.out.println("1:未批改完作业 2 : 作业已经批改完");
t=sc.nextInt();
try {
if(t==1) {
throw new Myexception("未批改完作业,任课老师停止上课");
}
else if(t==2)
System.out.println("已经批改完作业");
else
System.out.println("error!");
}
catch(Myexception e) {
e.printStackTrace();
}
System.out.println("1:查看助教 2:查看老师 0:停止");
xx=sc.nextInt();
if(xx==1) {
x=new Proxy(new Minortea());
x.Class();
}
else if(xx==2) {
if(t==2) {
x=new Proxy(new MajorTea());
x.Class();
}
else
System.out.println("停止上课");
}
else if(xx==0)
break;
System.out.println("1:作业未交齐 2 : 作业已经交齐");
tt=sc.nextInt();
try {
if(tt==1) {
throw new Myexception("作业未交齐");
}
else if(tt==2)
System.out.println("作业已经交齐");
else
System.out.println("error!");
}
catch(Myexception e) {
e.printStackTrace();
}
}
}
}