JavaSE项目实践1


前言

本文主要记录了本人在JavaSE课程中的实验项目经历

本次实验旨在通过使用职责链的概念,设计和实现一个简单的计算器。职责链( Chain of Responsibility )模式也被叫做责任链模式,在《设计模式》属于行为型模式,是一个请求有多个对象来处理,这些对象是一条链,但具体由哪个对象来处理,根据条件判断来确定,如果不能处理会传递给该链中的下一个对象,直到有对象处理它为止。 责任链模式将请求和处理分离开来,进行解耦。我们将利用职责链的特性,实现输入操作符匹配,并通过计算得出结果的基本计算功能。本实验将帮助我们加深对职责链的理解,并锻炼我们的编程技巧。

实验一、计算器简单实现

1.代码实现

  • Add.java

package myfirst;

public class Add extends CalcUnit {
	public Add(CalcUnit next) {
		super(next);	
	}
	@Override
	public  boolean fit(String operator)
	{
		return operator.equals("+");  
	}
	@Override
	public  double calc(double x,double y)
	{
		return x + y;
	}
	
}
  • Sub.java

package myfirst;

public class Sub extends CalcUnit {
	public Sub(CalcUnit next) {
		super(next);
		
	}
	@Override
	public  boolean fit(String operator)
	{
		return operator.equals("-");
	}
	@Override
	public  double calc(double x,double y)
	{
		return x - y;
	}
}
  • Mul.java

package myfirst;

public class Mul extends  CalcUnit {
	public Mul(CalcUnit next) {
		super(next);
		
	}
	@Override
	public  boolean fit(String operator)
	{
		return operator.equals("*");
	}
	@Override
	public  double calc(double x,double y)
	{
		return x * y;
	}
}
  • Div.java

package myfirst;

public class Div extends CalcUnit {
	public Div(CalcUnit next) {
		super(next);
	}
	@Override
	public  boolean fit(String operator)
	{
		return operator.equals("/");
	}
	@Override
	public  double calc(double x,double y)
	{
		return x / y;
	}
}
  • CalcUnit

package myfirst;
public abstract class CalcUnit {
	private CalcUnit next = null;
	public abstract boolean fit(String operator);
	public abstract double calc(double x, double y);
	public CalcUnit(CalcUnit next) {
	this.next = next;
	}
	public CalcUnit getNext()
	{
		return next;
	}
	public double handle(String opera) throws Exception {
		String[] items = opera.split(" ");
		String operator =items[1];
		double x =Double.parseDouble(items[0]);
		double y =Double.parseDouble(items[2]);
		if(fit(operator)) {
			return this.calc(x, y);
		}
		else if (getNext()!= null) {
			return getNext().handle(opera);
		} else {
			throw new Exception("没找到合适的处理");
		}
		
	}
}
  • Main(采用传递链)

package myfirst;
import java.util.Scanner;


public class myapp
{      
 public static void main(String[] args)
{
	Scanner input = new Scanner(System.in);
	CalcUnit Calclator = new Add(new Sub(new Mul(new Div(null))));
	while(true) {
        System.out.print("输入:");
	    String commond = input.nextLine().trim();
	    if(commond.equals("exit")) {
	         break;
	      }
	   try {
        System.out.println("计算结果:" + Calclator.handle(commond));
	} catch (Exception e) {
	    System.out.println(e.getMessage());
	    }
	}
	input.close();
	}
}

2.运行结果

3.类图


总结

通过本次实验,我们成功地设计和实现了一个简单的计算器,利用职责链的概念实现了操作符匹配,并能够正确计算出结果。这个实验不仅让我们更加熟悉了职责链的使用,还提高了我们的编程能力和问题解决能力。通过这个实验,我深刻认识到了设计模式在实际应用中的重要性。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值