欢迎来到天天文库
浏览记录
ID:40312877
大小:53.00 KB
页数:5页
时间:2019-07-30
《策略模式作业》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验报告1实验内容:Strategy模式的应用某公司专门销售各种打印机,销售打印机时都有一定的折扣让利给顾客,但折扣计算的方法有很多种,如:不打折;每台减扣固定的金额;按售价的5%打折等等,且折扣计算方法可能发生变化。现在要开发该公司的销售系统,实现打印机销售时的价格计算。2实验要求:请用strategy模式设计解决方案。你的方案要能够使得在销售打印机(即使是同一种打印机)时可以灵活的选用价格计算方法,并且可以很容易地增加或修改价格计算方法而不至于对整个系统的维护造成困难。实验报告中要求包含设计方案的类图,并给出相应的Java源程序(要求实现图形用户界面)。类图设计如下:J
2、ava源程序:1、策略Strategy.javapublicinterfaceStrategy{publicabstractdoublegetprice(doubleprice);}2、具体策略策略一原价售出StrategyOne.javapublicclassStrategyOneimplementsStrategy{publicdoublegetprice(doubleprice){doublethePrice=price;returnthePrice;}}策略二减价30元售出StrategyTwo.javapublicclassStrategyTwoimplement
3、sStrategy{publicdoublegetprice(doubleprice){doublethePrice=price-30;returnthePrice;}}策略三折扣5%StrategyThree.javapublicclassStrategyThreeimplementsStrategy{publicdoublegetprice(doubleprice){doublethePrice=price*0.95;returnthePrice;}}3、上下文Printer.javapublicclassPrinter{Strategystrategy;publicv
4、oidsetStrategy(Strategystrategy){this.strategy=strategy;}publicdoublegetPrice(doubleprice){if(strategy!=null)returnstrategy.getprice(price);elsereturn0;}}4、模式的使用Application.javaimportjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassApplicationimplementsActionListener{JFrame
5、app;JPanelp1,p2,p3;JLabellabel1,label2,label3,label4;JTextFieldtxf;JComboBoxcombo;JButtonbutton1;publicApplication(){app=newJFrame("Printer");app.setSize(400,150);app.setVisible(true);Containerc=app.getContentPane();//初始化String[]s={"不打折","减30元","折扣5%"};combo=newJComboBox(s);txf=newJTextFie
6、ld("",5);button1=newJButton("计算");label1=newJLabel("打印机原价:");label2=newJLabel("价格计算方法:");label3=newJLabel("折扣后价格:");label4=newJLabel("元");//将控件放入面板中p1=newJPanel();p1.add(label1);p1.add(txf);p1.add(label2);p1.add(combo);c.add(p1,BorderLayout.NORTH);p2=newJPanel();p2.add(label3);p2.add(label
7、4);c.add(p2,BorderLayout.CENTER);p3=newJPanel();p3.add(button1);c.add(p3,BorderLayout.SOUTH);//按钮响应事件button1.addActionListener(this);}//按钮响应函数publicvoidactionPerformed(ActionEvente){Pricepr=newPrice();if(e.getSource()==button1){//策略一if(combo.getSelectedItem().
此文档下载收益归作者所有