一、计算器的简单工厂模式实现代码及UML图
1、UML图
2、代码
package T4;
public class Operation {
private double _numberA=0;
private double _numberB=0;
public double get_numberA() {
return _numberA;
}
public void set_numberA(double _numberA) {
this._numberA = _numberA;
}
public double get_numberB() {
return _numberB;
}
public void set_numberB(double _numberB) {
this._numberB = _numberB;
}
public double GetResult() {
double result=0;
return result;
}
}
package T4;
public class Add extends Operation {
@Override
public double GetResult() {
// TODO Auto-generated method stub
double result=0;
result=get_numberA()+get_numberB();
return result;
}
}
package T4;
public class Div extends Operation {
@Override
public double GetResult() {
// TODO Auto-generated method stub
double result = 0;
try {
result = get_numberA() / get_numberB();
} catch (Exception e) {
// TODO: handle exception
System.err.println(e.getStackTrace());
}
return result;
}
}
package T4;
public class Mul extends Operation {
@Override
public double GetResult() {
// TODO Auto-generated method stub
double result = 0;
result = get_numberA() * get_numberB();
return result;
}
}
package T4;
public class Sub extends Operation {
@Override
public double GetResult() {
// TODO Auto-generated method stub
double result = 0;
result = get_numberA() - get_numberB();
return result;
}
}
package T4;
public class OprationFactory {
public static Operation createOperation(String operation1) {
Operation oper = null;
switch (operation1) {
case "+":
oper=new Add();
break;
case "-":
oper=new Sub();
break;
case "*":
oper=new Mul();
break;
case "/":
oper=new Div();
break;
}
return oper;
}
}
package T4;
public class Test {
public static void main(String[] args) {
Operation operation;
operation=OprationFactory.createOperation("+");
operation.set_numberA(1);
operation.set_numberB(2);
double result=operation.GetResult();
}
}
二、收银软件的策略模式实现代码及UML图
1、UML图
2、代码
package T5;
public abstract class CashSuper {
public abstract double accCash(double money) ;
}
package T5;
public class CashNormal extends CashSuper{
@Override
public double accCash(double money) {
// TODO Auto-generated method stub
return money;
}
}
package T5;
public class CashRebate extends CashSuper {
private double bate = 1d;
public CashRebate(double bate) {
super();
this.bate = bate;
}
@Override
public double accCash(double money) {
// TODO Auto-generated method stub
return money*bate;
}
}
package T5;
public class CashReturn extends CashSuper {
private double condation = 0.0d;
private double CashReturn = 0.0d;
public CashReturn(double condation, double cashReturn) {
super();
this.condation = condation;
CashReturn = cashReturn;
}
@Override
public double accCash(double money) {
// TODO Auto-generated method stub
double result =money;
if (money>=condation) {
result=money-Math.floor(money/condation)*CashReturn;
}
return result;
}
}
package T5; public class CshContext { private CashSuper cashSuper; public CshContext(CashSuper cashSuper) { super(); this.cashSuper = cashSuper; } public double GetResult(double money) { return cashSuper.accCash(money); } }
package T5;
public class Click {
double total =0.0d;
private void casebtn(String select,double money) {
CshContext cshContext=null;
switch (select) {
case "正常收费":
cshContext=new CshContext(new CashNormal());
break;
case "满300反100":
cshContext=new CshContext(new CashReturn(300,100));
break;
case "打八折":
cshContext=new CshContext(new CashRebate(0.8));
break;
default:
break;
}
double totalprice=0.0d;
totalprice=cshContext.GetResult(money);
total=totalprice+total;
System.out.println("收费为"+total);
}
}
三、收银软件的策略模式+简单工厂模式实现代码及UML图
1、UML图
package T5;
public class CashContext {
CashSuper cashSuper=null;
public CashContext(String type) {
switch (type) {
case "正常收费":
CashNormal csCashNormal=new CashNormal();
cashSuper=csCashNormal;
break;
case "满300反100":
CashReturn cs=new CashReturn(300,100);
cashSuper=cs;
break;
case "打8折":
CashRebate cashRebate=new CashRebate(0.8);
cashSuper=cashRebate;
break;
default:
break;
}
}
public double getresult(double money) {
return cashSuper.accCash(money);
}
}
public class Click1 {
double total =0.0d;
public void click1(String select,double money,String type) {
CashContext cashContext=new CashContext(type);
double totalprice=0.0d;
totalprice=cashContext.getresult(money);
total+=totalprice;
System.out.println("总金额为"+total);
}
}