学习设计模式了解了下AWT,学习AWT了解了下Swing,然后接触了点SWT。
总之,CS架构搞这个确实麻烦许多。看看DELPHI,PB多爽。
罢了,罢了,eclipse还是NetBeans好用些,主要是学习设计模式,而且这个话题已经拖着够长时间了。
学习效率确实太低,尤其是工作、生活之余。OK,开始......
先工厂模式实现下收银软件模式。
父类:
public abstract class CashSuper { public abstract double acceptCash(double money); public void test() { String ss; ss = "me 么"; } }
子类:
public class CashNormal extends CashSuper{ /** * * @param money * @return */ @Override public double acceptCash(double money) { return money; } }
public class CashRebate extends CashSuper{ private double moneyRebate = 0.0; public CashRebate(String moneyRebate) { this.moneyRebate = Double.parseDouble(moneyRebate); } @Override public double acceptCash(double money) { return money * moneyRebate; } }
public class CashReturn extends CashSuper { private double moneyCondition = 0.0; private double moneyReturn = 0.0; public CashReturn (String moneyCondition, String moneyReturn) { this.moneyCondition = Double.parseDouble(moneyCondition); this.moneyReturn = Double.parseDouble(moneyReturn); } @Override public double acceptCash(double money) { double result = money; if(money >= moneyCondition) result = money - Math.floor(money / moneyCondition) * moneyReturn; return result; } }
工厂:
public class CashFactory { public static CashSuper createCashAccept(Integer type) { CashSuper cs = null; switch(type) { case 0 : cs = new CashNormal(); break; case 1 : CashReturn cr1 = new CashReturn("300","100"); cs = cr1; break; case 2: CashRebate cr2 = new CashRebate("0.8"); cs = cr2; break; default : break; } return cs; } }
客户端调用:
private void button1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: DecimalFormat df = new DecimalFormat("#.####"); Double dj = Double.parseDouble(this.textField1.getText().toString().trim()); Double sl = Double.parseDouble(this.textField2.getText().toString().trim()); Double hj = 0.0; CashSuper cs = CashFactory.createCashAccept(this.xx.getSelectedIndex()); hj = cs.acceptCash(dj * sl); sum = sum + hj; show = "单价:" + this.textField1.getText() + "数量:" + this.textField2.getText() + "价格为:" + df.format(hj).toString() + "\n"+show ; this.textArea1.setText(show); this.label4.setText(df.format(sum).toString()); }
