ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:892.44KB ,
资源ID:28959278      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28959278.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(设计模式大作业实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

设计模式大作业实验报告.docx

1、设计模式大作业实验报告蛋糕订购系统一、实验介绍3二、实验环境3三、系统流程3四、系统总类图4五、程序源代码及各个模块子类图5六、程序运行截图.22七、实验总结.22一、实验介绍本系统使用了简单工厂模式、工厂方法模式、单例模式、门面模式、策略模式、观察者模式一共6种模式实现了从蛋糕店订购订购蛋糕的这样一个系统。二、实验环境 Windows操作系统、MyEclipse10.0、MySQL 5.5、jdk1.6三、系统流程四、系统总类图五、程序源代码及各个模块子类图(一)测试类Client.java:package net.xsl.ordercake.test;import net.xsl.orde

2、rcake.discount.DiscountStyleThree;import net.xsl.ordercake.discount.OrderCake;import net.xsl.ordercake.order.CakeShop;import net.xsl.ordercake.order.EastVilla;import net.xsl.ordercake.order.WestVilla;public class Client public static void main (String arg) CakeShop starCakeShop = CakeShop.getCakeSho

3、p(); new WestVilla(starCakeShop, 草莓水果); starCakeShop.getNewName(西13); starCakeShop.notifyCustomer(); OrderCake cake = new OrderCake(); System.out.println(今日促销一律8折优惠); cake.setM(8); cake.setStyle(new DiscountStyleThree(); cake.setPrice(80) ; System.out.println(本次订购成功完成,需要支付的金额为+cake.getMoney(cake.get

4、Price(),cake.getM()+,原价80); System.out.println(=); new EastVilla(starCakeShop, 甜奶); starCakeShop.getNewName(东18); starCakeShop.notifyCustomer(); System.out.println(=); starCakeShop.getNewName(东12); starCakeShop.notifyCustomer(); (二)折扣的接口和方法(策略模式):a)接口DiscountStyle.java:package net.xsl.ordercake.disc

5、ount;public interface DiscountStyle public double disCount(double price,double m);b)折方式一DiscountStyleOne.java:package net.xsl.ordercake.discount;public class DiscountStyleOne implements DiscountStylepublic double disCount(double price,double m) return price;c)打折方式二DiscountStyleTwo.java:package net.x

6、sl.ordercake.discount;public class DiscountStyleTwo implements DiscountStylepublic double disCount(double price,double m) price = price - m; return price;d)打着方式三DiscountStyleThree.java:package net.xsl.ordercake.discount;public class DiscountStyleThree implements DiscountStylepublic double disCount(d

7、ouble price,double m) price = price * m/10; return price;e)订蛋糕对象类,使用了get/set方法OrderCake.java:package net.xsl.ordercake.discount;public class OrderCake double money,price;/money是打折后的最终价格,price是原价 DiscountStyle style; double m; public double getMoney(double price,double m) return style.disCount(price,

8、m); public void setPrice(double price) this.price = price ; public double getPrice() return price; public void setStyle(DiscountStyle style) this.style = style ; public DiscountStyle getStyle() return style; public void setM(double m) this.m = m ; public double getM() return m; (三)顾客向蛋糕订购蛋糕(观察者模式),并

9、在具体主题中使用了单例模式a)主题Shop.java:package net.xsl.ordercake.order;public interface Shop public void addCustomer(Customer o); public void deleteCustomer(Customer o); public void notifyCustomer();b)具体主题(使用了单例模式,只能创建一个蛋糕商店的对象)CakeShop.java:package net.xsl.ordercake.order;import java.util.ArrayList;public clas

10、s CakeShop implements Shop String name;boolean changed;ArrayListpersonList; private int i = 0;private static CakeShop uniqueCakeShop; private CakeShop() uniqueCakeShop = this; personList = new ArrayList(); name = ; changed = false; public static synchronized CakeShop getCakeShop() if(uniqueCakeShop

11、= null) uniqueCakeShop = new CakeShop(); return uniqueCakeShop; public void addCustomer(Customer o) if(!(personList.contains(o) personList.add(o); public void deleteCustomer(Customer o) if(personList.contains(o) personList.remove(o); public void notifyCustomer() if(changed) try Customer customer = p

12、ersonList.get(i); customer.orderCake(name); i+; changed = false; catch(Exception e) System.out.println(没有新的订购信息); public void getNewName(String str) if(str.equals(name) changed = false; else name = str; changed = true; c)观察者Customer.java:package net.xsl.ordercake.order;public interface Customer publ

13、ic void orderCake(String name);d)体观察者一EastVilla.java:package net.xsl.ordercake.order;import net.xsl.ordercake.creator.MakeChocolateCake;import net.xsl.ordercake.creator.MakeFruityCake;import net.xsl.ordercake.creator.MakeMilkCake;import net.xsl.ordercake.jdbc.JDBCFacade;import net.xsl.ordercake.prod

14、uct.ChocolateFactory;import net.xsl.ordercake.product.FruitFactory;import net.xsl.ordercake.product.MilkFactory;public class EastVilla implements Customer Shop shop; private String cakeType; public EastVilla(Shop shop,String cakeType) this.shop = shop; this.cakeType = cakeType; shop.addCustomer(this

15、); public void orderCake(String name) System.out.println(name+订了一个+cakeType+蛋糕); JDBCFacade dbFacade=new JDBCFacade(); String sqlStr = select * from ordercake; String sqlStr1 = insert into ordercake(cakeType, name, quantity)+ VALUES (+cakeType+,+name+,1); dbFacade.jdbcInsert(sqlStr1); System.out.pri

16、ntln(查询插入之后新的数据库); dbFacade.jdbcSelect(sqlStr); if(cakeType.equals(草莓水果) | cakeType.equals(葡萄水果) MakeFruityCake eastVilla = new MakeFruityCake(cakeType); FruitFactory fruitCake = eastVilla.makeFruityCake(); fruitCake.createCake(); else if(cakeType.equals(牛奶巧克力) | cakeType.equals(黑巧克力) MakeChocolateC

17、ake eastVilla1 = new MakeChocolateCake(cakeType); ChocolateFactory chocolateCake = eastVilla1.makeChocolateCake(); chocolateCake.createCake(); else if(cakeType.equals(双层鲜奶) | cakeType.equals(甜奶) MakeMilkCake eastVilla1 = new MakeMilkCake(cakeType); MilkFactory milkCake = eastVilla1.makeMilkCake(); m

18、ilkCake.createCake(); e)具体观察者二WestVilla.java:package net.xsl.ordercake.order;import net.xsl.ordercake.creator.MakeChocolateCake;import net.xsl.ordercake.creator.MakeFruityCake;import net.xsl.ordercake.creator.MakeMilkCake;import net.xsl.ordercake.jdbc.JDBCFacade;import net.xsl.ordercake.product.Choc

19、olateFactory;import net.xsl.ordercake.product.FruitFactory;import net.xsl.ordercake.product.MilkFactory;public class WestVilla implements Customer Shop shop; private String cakeType; public WestVilla(Shop shop,String cakeType) this.shop = shop; this.cakeType = cakeType; shop.addCustomer(this); publi

20、c void orderCake(String name) System.out.println(name+订了一个+cakeType+蛋糕); JDBCFacade dbFacade=new JDBCFacade(); String sqlStr = select * from ordercake; String sqlStr1 = insert into ordercake(cakeType, name, quantity)+ VALUES (+cakeType+,+name+,1); dbFacade.jdbcInsert(sqlStr1); System.out.println(查询插

21、入之后新的数据库); dbFacade.jdbcSelect(sqlStr); if(cakeType.equals(草莓水果) | cakeType.equals(葡萄水果) MakeFruityCake westVilla = new MakeFruityCake(cakeType); FruitFactory fruitCake = westVilla.makeFruityCake(); fruitCake.createCake(); else if(cakeType.equals(牛奶巧克力) | cakeType.equals(黑巧克力) MakeChocolateCake west

22、Villa1 = new MakeChocolateCake(cakeType); ChocolateFactory chocolateCake = westVilla1.makeChocolateCake(); chocolateCake.createCake(); else if(cakeType.equals(双层鲜奶) | cakeType.equals(甜奶) MakeMilkCake westVilla1 = new MakeMilkCake(cakeType); MilkFactory milkCake = westVilla1.makeMilkCake(); milkCake.

23、createCake(); (四)JDBC(门面模式)JDBCFacade.java:package net.xsl.ordercake.jdbc;import java.sql.Connection; import java.sql.DriverManager;import java.sql.ResultSet; import java.sql.ResultSetMetaData;import java.sql.SQLException; import java.sql.Statement; public class JDBCFacade Connection conn = null; St

24、atement stmt = null; ResultSet rs = null; String sqlStr = ; public void createStatement() try stmt = conn.createStatement(); catch (SQLException e) e.printStackTrace(); public ResultSet jdbcSelect(String sqlStr) this.sqlStr = sqlStr; getConnection(); createStatement(); try rs = stmt.executeQuery(sql

25、Str); ResultSetMetaData rsmd = rs.getMetaData(); int j = 0; j = rsmd.getColumnCount(); while(rs.next() for(int i=0;ij;i+) System.out.print(rs.getString(i+1); System.out.print(t); System.out.println(); catch (SQLException e) e.printStackTrace(); return rs; public void jdbcUpdate(String sqlStr) this.s

26、qlStr = sqlStr; getConnection(); createStatement(); try int count = stmt.executeUpdate(sqlStr); System.out.println(表更新 + count + 条数据); catch (SQLException e) System.out.println(更新数据失败); public void jdbcInsert(String sqlStr) this.sqlStr = sqlStr; getConnection(); createStatement(); try int count = st

27、mt.executeUpdate(sqlStr); System.out.println(向表插入 + count + 条数据); catch (SQLException e) System.out.println(插入数据失败 + e.getMessage(); public void jdbcDelete(String sqlStr) this.sqlStr = sqlStr; getConnection(); createStatement(); try int count = stmt.executeUpdate(sqlStr); System.out.println(向表删除 + count + 条数据); catch (SQLException e) System.out.println(删除数据失败); public void jdbcClose() try rs.close(); stmt.close(); conn.close(); catch (SQLException e) e.printStackTrace(); public Connection getConnection() try Class.forName(com.mysql.jdbc.Driver); conn=DriverManager.getConnection(jdb

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1