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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

设计模式大题.docx

1、设计模式大题5.2.某电影院售票系统为不同类型的用户提供了不同的电影票(CinemaTicket)打折方式(Discount),学生凭学生证可享受8折优惠(StudentDiscount),儿童可享受减免10元的优惠(ChildrenDiscount), VIP用户除享受半价优惠外还可以进行积分(VIPDiscount)。选择一种合适的设计模式来设计该系统。(策略模式)/电影票类:环境类class MovieTicket private double price; private Discount discount; public void setPrice(double price) thi

2、s.price = price; public void setDiscount(Discount discount) this.discount = discount; public double getPrice() return discount.calculate(this.price); /折扣类:抽象策略类interface Discount public double calculate(double price);/学生折扣类:具体策略类class StudentDiscount implements Discount public double calculate(doubl

3、e price) return price * 0.8; /儿童折扣类:具体策略类class ChildrenDiscount implements Discount public double calculate(double price) return price - 10; /VIP会员折扣类:具体策略类class VIPDiscount implements Discount public double calculate(double price) System.out.println(增加积分!); return price * 0.5; /客户端测试类class Client p

4、ublic static void main(String args) MovieTicket mt = new MovieTicket(); mt.setPrice(50.00); double currentPrice; Discount obj; obj = new StudentDiscount(); /可通过配置文件实现 mt.setDiscount(obj); currentPrice = mt.getPrice(); System.out.println(折后价为: + currentPrice); System.out.println(-); obj = new VIPDisc

5、ount(); mt.setDiscount(obj); currentPrice = mt.getPrice(); System.out.println(折后价为: + currentPrice); public interface Count public abstract void discount(double a);public class CiTicket private Count disobj; public void discount(double a) disobj.discount(a); public void setdisobj(Count disobj) this.

6、disobj=disobj; public class StTicket implements Count private double a; public void discount(double a) System.out.println(原价为+a); this.a=a*0.8; System.out.println(学生票的票价为原价的8折:+this.a); public class VTicket implements Count private double a; public void discount(double a) System.out.println(原价为+a);

7、this.a=a*0.5; System.out.println(VIP会员的票价为原价的半价:+this.a); System.out.println(VIP会员的会员卡积分一次); public class ChTicket implements Count private double a; public void discount(double a) System.out.println(原价为+a); this.a=a-10; System.out.println(儿童票的票价为原价减10元:+this.a); public class Client public static vo

8、id main(String args) CiTicket c=new CiTicket(); Count d = new StTicket(); Count d1 = new ChTicket(); Count d2 = new VTicket(); d.discount(50); d1.discount(50); d2.discount(50); c.setdisobj(d); c.setdisobj(d1); c.setdisobj(d2); 1. 使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,请

9、用面向对象的语言实现该场景。现需要增加一个新的Robot类,如果传入参数R,则返回一个Robot对象,对代码进行修改并注意女娲的变化。import javax.swing.JOptionPane;/* * 主要显示类 * author 陈俊生 * */public class Main /* * 主方法 * param arg */ public static void main(String arg) /* * 提示输入 */ /*System.out.println(请大家输入你想让女娲造的人的代号:);*/ String str = ; /* * 当输入0时退出程序 */ while(t

10、rue) str = JOptionPane.showInputDialog(请大家输入你想让女娲造的人的代号:); NvWa nvWa = new NvWa(); Person person = nvWa.madeMan(str); person.play(); /* * 男人类 * author 陈俊生 * */class Man extends Person Override public void play() / TODO Auto-generated method stub /*System.out.println(大家好,我是男人!我来自地球!);*/ JOptionPane.s

11、howMessageDialog(null, 大家好,我是男人!我来自地球!); /* * 女娲类 * 简单工厂类 * author 陈俊生 * */class NvWa /* * 女娲造人方法 * param str 根据传递的参数进行造人 * return */ public Person madeMan(String str) Person person = null; switch (str) /* * 实例化男人 */ case M: person = new Man(); break; /* * 实例化男人 */ case W: person = new Woman(); brea

12、k; /* * 实例化机器人 */ case R: person = new Robot(); break; default:/* System.out.println(输入有误,女娲没这个能力造出你需要的人!);*/ person = new Person(); break; return person; /* * 人类 * author 陈俊生 * */class Person /* private String name;/姓名 private int age;/年龄*/ /* * 玩的方法 */ public void play() JOptionPane.showMessageDia

13、log(null, 输入有误,我还是一坨泥巴!女娲还没构造我!请重试); ;/* * 机器人类 * author 陈俊生 * */class Robot extends Person Override public void play() / TODO Auto-generated method stub /*System.out.println(大家好,我是机器人!我来自火星!);*/ JOptionPane.showMessageDialog(null, 大家好,我是机器人!我来自火星!); /* * 女人类 * author 陈俊生 * */class Woman extends Per

14、son Override public void play() / TODO Auto-generated method stub /*System.out.println(大家好,我是女人!我来自水星!);*/ JOptionPane.showMessageDialog(null, 大家好,我是女人!我来自水星!); 2.迟到的理由。(简单工厂和工厂模式)说明:根据迟到的理由不同,如:去厕所,在路上,回家等理由。当老师需要知道是何种理由迟到时只需传入相应的参数,现请使用简单工厂模式来模拟该过程。此外,如果有同学新增加一个“相亲”理由,为了遵循开闭原则,请使用工厂模式模拟上述过程。简单工厂模式

15、import javax.xml.parsers.*; import org.w3c.dom.*; import java.io.*; public class XMLUtilReason /该方法用于从XML配置文件中提取品牌名称,并返回该品牌名称 public static String getexcuse() try /创建文档对象 DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dFactory.newDocumentBuilder();

16、Document doc; doc = builder.parse(new File(configReason.xml); /获取包含品牌名称的文本节点 NodeList nl = doc.getElementsByTagName(excuse); Node classNode=nl.item(0).getFirstChild(); String excuse=classNode.getNodeValue().trim(); return excuse; catch(Exception e) e.printStackTrace(); return null; public abstract c

17、lass AbstractReason public abstract void reason();public class GoHome extends AbstractReason public void reason() System.out.println(Go Home!); public class GoToilet extends AbstractReason public void reason() System.out.println(Go to Toilet!); public class OnTheWay extends AbstractReason public voi

18、d reason() System.out.println(On The Way!); public class ReasonFactory public static AbstractReason produceReason (String excuse) throws Exception if(excuse.equalsIgnoreCase(Toilet) System.out.println(The ReasonFactory produces the reason of Toilet!); return new GoToilet(); else if(excuse.equalsIgno

19、reCase(Home) System.out.println(The ReasonFactory produces the reason of go home); return new GoHome(); else if(excuse.equalsIgnoreCase(OnTheWay) System.out.println(The ReasonFactory produces the reason of on the way!); return new OnTheWay(); else throw new Exception(Sorry! The reason is not true!);

20、 public class Client_xml public static void main(String args) try AbstractReason abstractreason; String excuse=XMLUtilReason.getexcuse(); abstractreason=ReasonFactory.produceReason(excuse); /abstractreason=ReasonFactory.produceReason (Home); abstractreason.reason(); catch(Exception e) System.out.pri

21、ntln(e.getMessage(); public class Client public static void main(String args) try AbstractReason abstractreason; abstractreason=ReasonFactory.produceReason (Toilet); abstractreason.reason(); catch(Exception e) System.out.println(e.getMessage(); 3.简历题目(浅克隆)需要有一个简历类,必须要有姓名,可以设置性别和年龄,可以设置工作经历。最终需要三份简历。

22、public class Resume implements Cloneable private String name; private String sex; private String age; private WorkExperience workexperience=null; public Resume(String name) this.name=name; this.workexperience=new WorkExperience(); public void setName(String name) this.name=name; public void setPerso

23、nalInfo(String sex, String age) this.sex=sex; this.age=age; public String getName() return (this.name); public String getSex() return(this.sex); public String getAge() return(this.age); public void setWorkExperience(String workDate, String Company) workexperience.setworkDate(workDate); workexperienc

24、e.setCompany(Company); public WorkExperience getWorkExperience() return this.workexperience; public Object clone() Resume clone=null; try clone=(Resume)super.clone(); catch(CloneNotSupportedException e) System.out.println(Clone failure!); return clone; public void display() System.out.println(Resume

25、:+ +this.getName()+ +this.getAge()+ +this.getSex(); System.out.println(Experience:+ +workexperience.getworkDate()+ +workexperience.getCompany(); public class WorkExperience private String workDate; private String Company; public void setworkDate(String workDate) this.workDate=workDate; public void s

26、etCompany(String Company) this.Company=Company; public String getworkDate() return (this.workDate); public String getCompany() return(this.Company); public class Client public static void main(String args) Resume resume,copy1,copy2; resume=new Resume(zhangsan); resume.setPersonalInfo(male, 25); resu

27、me.setWorkExperience(1995-1997,Company1); copy1=(Resume)resume.clone(); copy2=(Resume)resume.clone(); resume.display(); copy1.setName(lisi); copy1.setWorkExperience(2004-2007,Company2); copy1.display(); copy2.setPersonalInfo(female, 30); copy2.display(); System.out.println(resume=copy1); System.out.println(copy1=copy2); System.out.println(resume.getWorkExperience()=copy1.getWorkExperience(); System.out.println(copy1.getWorkExperience()=copy2.getWorkExperience(); 陈俊生版public class Resume implements Cloneable private String name;/姓名 private String se

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

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