java作业-代理设计模式和异常处理

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();
			}
	}
	}
}

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值