雨刷程序(二)

抽象雨刷程序

通过配置文件进行切换

(1)抽象控制杆类

package brush;

public abstract class AbstractLever {
	protected int lever;
	
	public AbstractLever() {	
		this(1);
	}
	
	public AbstractLever(int lever){
		this.lever = lever;
	}
	
	public abstract int getPos();
	
	public abstract void upPos();
	
	public abstract void downPos();
}

2)控制杆类

控制杆类1:

package brush;

public class Lever extends AbstractLever {
	
	public Lever(){
		super();
	}
	
	public Lever(int lever){
		super(lever);
	}
	
	public int getPos(){
		return this.lever;
	}
	
	public void upPos(){
		if(this.lever < 4){
			this.lever ++;
		}
	}
	
	public void downPos(){
		if(this.lever > 1){
			this.lever --;
		}
	}
}

控制杆类2:

package brush;

public class Lever_2 extends AbstractLever{
	public Lever_2(){
		super();
	}
	
	public Lever_2(int lever){
		super(lever);
	}
	
	public int getPos(){
		return this.lever;
	}
	
	public void upPos(){
		if(this.lever < 5){
			this.lever ++;
		}
	}
	
	public void downPos(){
		if(this.lever > 1){
			this.lever --;
		}
	}
}

(3)抽象刻度盘类

package brush;

public abstract class AbstractDial {
	protected int dial;
	
	public AbstractDial(){
		this(1);
	}
	
	
	public AbstractDial(int dial){
		this.dial = dial;
	}
	
	public abstract int getPos();
	
	public abstract void upPos();
	
	public abstract void downPos();
}

(4)刻度盘类

刻度盘类1:

package brush;

public class Dial extends AbstractDial{
	public Dial(){
		super();
	}
	
	public Dial(int pos){
		super(pos);
	}
	
	public int getPos(){
		return this.dial;
	}
	
	public void upPos(){
		if(this.dial < 3){
			this.dial ++;
		}
	}
	
	public void downPos(){
		if(this.dial > 1){
			this.dial --;
		}
	}
}

刻度盘类2:

package brush;

public class Dial_2 extends AbstractDial{
	public Dial_2(){
		super();
	}
	
	public Dial_2(int pos){
		super(pos);
	}
	
	public int getPos(){
		return this.dial;
	}
	
	public void upPos(){
		if(this.dial < 5){
			this.dial ++;
		}
	}
	
	public void downPos(){
		if(this.dial > 1){
			this.dial --;
		}
	}
}

(5)雨刷类

package brush;

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

}

(6)中介类

扫描二维码关注公众号,回复: 8585150 查看本文章
package brush;

public class Agent {
	protected AbstractLever lever;
	protected AbstractDial dial;
	protected Brush brush;
	
	public Agent(){
		lever = (AbstractLever)XMLUtil.getBean();
		dial = (AbstractDial)XMLUtil_2.getBean();
		brush = new Brush();
	}
	
	public void leverUp(){
		this.lever.upPos();
		dealSpeed();
	}
	public void leverDown(){
		this.lever.downPos();
		dealSpeed();
	}
	public void dialUp(){
		this.dial.upPos();
		dealSpeed();
	}
	public void dialDown(){
		this.dial.downPos();
		dealSpeed();
	}
	
	
	public void dealSpeed(){
		int speed = 0;
		switch(this.lever.getPos()){
		case 1:speed = 0;break;
		case 2:
			switch(this.dial.getPos()){
			case 1:speed = 4;break;
			case 2:speed = 6;break;
			case 3:speed = 12;break;
			case 4:speed = 18;break;
			case 5:speed = 25;break;
			}break;
		case 3:speed = 30;break;
		case 4:speed = 60;break;
		case 5:speed = 90;break;
		}
		this.brush.setSpeed(speed);
	}
	
	public void show(){
		String[] leverPos = {" ","停止","间歇","低速","高速","超高速"};
		System.out.println("The Lever's postion is:" + leverPos[this.lever.getPos()]);
		System.out.println("The Dial's postion is:" + this.dial.getPos());
		System.out.println("The Brush's speed is:" + this.brush.getSpeed()); 
	}
}

(7)XMLutil工具类

工具类1:

package brush;

public class Agent {
	protected AbstractLever lever;
	protected AbstractDial dial;
	protected Brush brush;
	
	public Agent(){
		lever = (AbstractLever)XMLUtil.getBean();
		dial = (AbstractDial)XMLUtil_2.getBean();
		brush = new Brush();
	}
	
	public void leverUp(){
		this.lever.upPos();
		dealSpeed();
	}
	public void leverDown(){
		this.lever.downPos();
		dealSpeed();
	}
	public void dialUp(){
		this.dial.upPos();
		dealSpeed();
	}
	public void dialDown(){
		this.dial.downPos();
		dealSpeed();
	}
	
	
	public void dealSpeed(){
		int speed = 0;
		switch(this.lever.getPos()){
		case 1:speed = 0;break;
		case 2:
			switch(this.dial.getPos()){
			case 1:speed = 4;break;
			case 2:speed = 6;break;
			case 3:speed = 12;break;
			case 4:speed = 18;break;
			case 5:speed = 25;break;
			}break;
		case 3:speed = 30;break;
		case 4:speed = 60;break;
		case 5:speed = 90;break;
		}
		this.brush.setSpeed(speed);
	}
	
	public void show(){
		String[] leverPos = {" ","停止","间歇","低速","高速","超高速"};
		System.out.println("The Lever's postion is:" + leverPos[this.lever.getPos()]);
		System.out.println("The Dial's postion is:" + this.dial.getPos());
		System.out.println("The Brush's speed is:" + this.brush.getSpeed()); 
	}
}

工具类2:

package brush;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
import java.io.*;

public class XMLUtil_2 {
	public static Object getBean() {
		try {
			DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder builder = dFactory.newDocumentBuilder();
			Document doc;
			doc = builder.parse(new File("config.xml"));

			NodeList nl = doc.getElementsByTagName("ClassName");
			Node classNode = nl.item(1).getFirstChild();
			String cName = classNode.getNodeValue();

			Class c = Class.forName(cName);
			Object obj = c.newInstance();
			return obj;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
}

(8)测试类

package brush;
import java.util.Scanner;

public class Brush_App {
	public static void menu(){
		System.out.println("===========Brush_APP==========");
		System.out.println("1:Lever up.");
		System.out.println("2:Lever down.");
		System.out.println("3:Dial up.");
		System.out.println("4:Dial down.");
		System.out.println("0:Exit.");
		System.out.println("==============================");
	}
	
	public static void main(String[]args){
		Scanner input = new Scanner(System.in);
		menu();
		int flag = input.nextInt();
		Agent agent = new Agent();
		while(flag != 0){			
			switch(flag){
			case 1:agent.leverUp();break;			
			case 2:agent.leverDown();break;
			case 3:agent.dialUp();break;
			case 4:agent.dialDown();break;
			case 0:System.exit(1);break;
			}
			agent.show();
			menu();
			flag = input.nextInt();		
		}		
	}
}

(9)配置文件config.xml

项目下新建,不是在src下新建

<?xml version="1.0"?>
<config>
	<ClassName>brush.Lever_2</ClassName>
	<ClassName>brush.Dial_2</ClassName>
</config>
发布了53 篇原创文章 · 获赞 117 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_40431584/article/details/89763404