雨刷程序参考代码2

设计类图:



抽象控制杆类:

public abstract class AbstractLever {
	
	protected int lever = 1;
	protected int maxlever = 0;
	
	public AbstractLever()
	{
		lever = 1;
	}
	
	public int getMaxLever()
	{
		return maxlever;
	}
	
	public void setMaxLever(int maxlever)
	{
		this.maxlever = maxlever; 
	}
	
	public AbstractLever(int maxlever)
	{
		this.setMaxLever(maxlever);
	}
	
	public abstract int getLever();	
	public abstract int leverUp();	
	public abstract int leverDown();
}

抽象刻度盘类:

public abstract class AbstractDial {
	
	protected int dial = 1;
	protected int maxDial = 1;
	
	public AbstractDial()
	{
		dial = 1;
	}
	
	public AbstractDial(int maxDial)
	{
		setMaxDial(maxDial);
	}
	
	public int getMaxDial()
	{
		return maxDial;
	}
	
	public void setMaxDial(int maxDial)
	{
		this.maxDial = maxDial;
	}
	
	public abstract int getDial();	
	public abstract int dialUp();	
	public abstract int dialDown();

}

抽象雨刷类:

public abstract class AbstractBrush {
	
	protected int speed = 0;
	
	public AbstractBrush(int speed)
	{
		this.speed = speed;
	}
	
	public AbstractBrush()
	{
		this.speed = 0;
	}
	
	public abstract int getSpeed();
	
	public abstract void setSpeed(int speed);	

}

抽象中介类:

public abstract class AbstractAgent {
	
	protected AbstractLever l;
	protected AbstractDial d;
	protected AbstractBrush b;
	
	public AbstractAgent()
	{
	}
	
	public AbstractAgent(AbstractLever l,AbstractDial d,AbstractBrush b)
	{
		this.l = l;
		this.d = d;
		this.b = b;
	}
	
	public int getLever()
	{
		return l.getLever();
	}
	
	public int getDial()
	{
		return d.getDial();
	}
	
	public abstract void doSpeed();
	public abstract void show();	

}

控制杆类:

public class Lever extends AbstractLever{
	
	public Lever()
	{
		super();
	}
	
	public Lever(int maxlever)
	{
		super(maxlever);
	}
	
	public int getLever()
	{
		return lever;
	}
	
	public int leverUp()
	{
		if(lever < maxlever)
			lever++;
		return lever;
	}
	
	public int leverDown()
	{
		if(lever > 1)
			lever --;
		return lever;
	}
}

刻度盘类:

public class Dial extends AbstractDial{
	
	
	public Dial()
	{
		super();
	}
	
	public Dial(int dial)
	{
		super(dial);
	}
	
	public int getDial()
	{
		return dial;
	}
	
	public int dialUp()
	{
		if(dial < maxDial)
			dial++;
		return dial;
	}
	
	public int dialDown()
	{
		if(dial > 1)
			dial --;
		return dial;
	}
}

雨刷类:

public class Brush extends AbstractBrush{
	
	public Brush()
	{
		super();
	}
	
	public Brush(int speed)
	{
		super(speed);
	}
	
	public int getSpeed()
	{
		return speed;
	}
	
	public void setSpeed(int speed)
	{
		this.speed = speed;
	}

}

第二种雨刷的中介类:

public class AgentNew extends AbstractAgent{

	
	public AgentNew()
	{
		super();
	}
	
	public AgentNew(AbstractLever l,AbstractDial d,AbstractBrush b)
	{
		super(l,d,b);
	}	
	
	public void doSpeed()
	{
		int speed = 0;
		switch(getLever())
		{
		case 1:speed = 0;break;
		case 2:
			switch(getDial())
			{
			case 1: speed = 4;break;
			case 2: speed = 6;break;
			case 3: speed = 12;break;
			case 4: speed = 18;break;
			}
			break;
		case 3: speed = 30;break;
		case 4: speed = 60;break;
		case 5: speed = 90;break;
		}
		b.setSpeed(speed);
	}
	
	public void show()
	{
		String slever = "";
		switch(getLever())
		{
		case 1: slever = "停止";break;
		case 2: slever = "间歇";break;
		case 3: slever = "低速";break;
		case 4: slever = "高速";break;
		case 5: slever = "超高速";break;
		}
		
		System.out.println("控制杆的档位为:" + slever );
		System.out.println("刻度盘的刻度为:" + getDial());
		System.out.println("雨刷的速度为:" + b.getSpeed());
	}
}

Client类:

import java.util.Scanner;

public class Brush_Test {
	public static void menu() {
		System.out.println("==================Please choose operation============");
		System.out.println("\t==========1:Lever Up===========");
		System.out.println("\t==========2:Lever Down=========");
		System.out.println("\t==========3:Dial Up============");
		System.out.println("\t==========4:Dial Down==========");
		System.out.println("\t==========0:Quit===============");
		System.out.println("=====================================================");
		System.out.println("Input the number(0~4):");
	}

	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		//第一种雨刷尝试
		//AbstractAgent agent = new Agent();
		//agent.l = new Lever(4);
		//agent.d = new Dial(3);
		//agent.b = new Brush();
		//第二种雨刷尝试
		AbstractAgent agent = new AgentNew();
		agent.l = new Lever(5);
		agent.d = new Dial(4);
		agent.b = new Brush();
		Scanner input = new Scanner(System.in);
		int choice = 0;
			
		menu();
		try{ 
			while(true)
			{
				choice = input.nextInt();
				if(choice == 0)
					break;
				switch(choice)
				{
				case 1:
					if(agent.getLever() >= agent.l.getMaxLever())
					{
						System.out.println("控制杆已经处于高速档位,不能再升档!");
						menu();
						continue;
					}
					else
					{
						agent.l.leverUp();
					}
					break;
				case 2:
					if(agent.getLever() <= 1)
					{
						System.out.println("控制杆已经处于停止档位,不能再降档!");
						menu();
						continue;
					}
					else
					{
						agent.l.leverDown();
					}
					break;
				case 3:
					if(agent.getDial() >= agent.d.getMaxDial())
					{
						System.out.println("刻度盘已经处于最高刻度,不能再升档!");
						menu();
						continue;
					}
					else
					{
						agent.d.dialUp();
					}
					break;
				case 4:
					if(agent.getDial() <= 1)
					{
						System.out.println("刻度盘已经处于最低刻度,不能再降档!");
						menu();
						continue;
					}
					else
					{
						agent.d.dialDown();
					}
					break;
				default:
					System.out.println("请输入数字0~4");
					menu();
					continue;
				} //switch
				
				agent.doSpeed();
				agent.show();
				menu();
			}  //while
		
		}finally{
			input.close();
		}		
	}
}



评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值