抽象雨刷程序
通过配置文件进行切换
(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>