- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
策略模作业
实验报告
1实验内容: Strategy模式的应用
某公司专门销售各种打印机,销售打印机时都有一定的折扣让利给顾客,但折扣计算的方法有很多种,如:不打折;每台减扣固定的金额;按售价的5%打折等等,且折扣计算方法可能发生变化。现在要开发该公司的销售系统,实现打印机销售时的价格计算。
2实验要求:请用strategy模式设计解决方案。你的方案要能够使得在销售打印机(即使是同一种打印机)时可以灵活的选用价格计算方法,并且可以很容易地增加或修改价格计算方法而不至于对整个系统的维护造成困难。
实验报告中要求包含设计方案的类图,并给出相应的Java源程序(要求实现图形用户界面)。
类图设计如下:
Java源程序:
1、策略
Strategy.java
public interface Strategy {
public abstract double getprice(double price);
}
2、具体策略
策略一原价售出
StrategyOne.java
public class StrategyOne implements Strategy{
public double getprice(double price)
{
double thePrice = price;
return thePrice;
}
}
策略二减价30元售出
StrategyTwo.java
public class StrategyTwo implements Strategy{
public double getprice(double price)
{
double thePrice = price - 30;
return thePrice;
}
}
策略三折扣5%
StrategyThree.java
public class StrategyThree implements Strategy{
public double getprice(double price)
{
double thePrice = price * 0.95;
return thePrice;
}
}
3、上下文
Printer.java
public class Printer {
Strategy strategy;
public void setStrategy(Strategy strategy)
{
this.strategy = strategy;
}
public double getPrice(double price)
{
if (strategy != null)
return strategy.getprice(price);
else return 0;
}
}
4、模式的使用
Application.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Application implements ActionListener {
JFrame app;
JPanel p1, p2, p3;
JLabel label1, label2, label3, label4;
JTextField txf;
JComboBox combo;
JButton button1;
public Application() {
app = new JFrame(Printer);
app.setSize(400, 150);
app.setVisible(true);
Container c = app.getContentPane();
// 初始化
String []s = {不打折, 减30元, 折扣5%};
combo = new JComboBox(s);
txf = new JTextField(, 5);
button1 = new JButton(计算);
label1 = new JLabel(打印机原价:);
label2 = new JLabel(价格计算方法:);
label3 = new JLabel(折扣后价格:);
label4 = new JLabel( 元);
// 将控件放入面板中
p1 = new JPanel();
p1.add(label1);
p1.add(txf);
p1.add(label2);
p1.add(combo);
c.add(p1,BorderLayout.NORTH);
p2 =
您可能关注的文档
- 第二章业与思考题答案.doc
- 第二章测题(含答案).doc
- 第二章.3如何将计算机接入因特网(第2课时).doc
- 第二章通信号控制的基本理论.doc
- 第二章题(带答案).doc
- 第二节DR安装和设置.doc
- 第二章后习题.doc
- 第06 集成电路运算放大器.doc
- 第五单 《动画城》教案.doc
- 第五代iFi 802.11ac.doc
- 2024年教师资格之小学综合素质自我提分评估(附答案).pdf
- 2025年山东丰源煤电有限公司校园招聘模拟试题附带答案详解及答案一套.docx
- 福建省福州市2024-2025学年高三下学期2月质量检测押题预测模拟数学试题 .pdf
- 2025年医学高级职称-急诊医学(医学高级)考试近5年真题集锦(频考类试题)带答案.docx
- 2025年山东东阿阿胶集团有限责任公司校园招聘模拟试题附带答案详解及答案一套.docx
- 2024年湖南省冷水江市施工员之设备安装施工基础知识考试题库及答案参考.docx
- 2025年山东中泰煤业集团有限公司校园招聘85人公开引进高层次人才和急需紧缺人才笔试参考题库答案详解.docx
- 2024年黑龙江省建华区施工员之设备安装施工基础知识资格考试内部题库含答案(名师推荐).docx
- 2023-24年云南省屏边苗族自治县施工员之设备安装施工基础知识资格考试必刷200题完整题库【研优卷.docx
- 《茶叶绩效考评系统》课件.ppt
文档评论(0)