设计模式大题文档格式.docx

上传人:b****3 文档编号:6912607 上传时间:2023-05-07 格式:DOCX 页数:23 大小:93.56KB
下载 相关 举报
设计模式大题文档格式.docx_第1页
第1页 / 共23页
设计模式大题文档格式.docx_第2页
第2页 / 共23页
设计模式大题文档格式.docx_第3页
第3页 / 共23页
设计模式大题文档格式.docx_第4页
第4页 / 共23页
设计模式大题文档格式.docx_第5页
第5页 / 共23页
设计模式大题文档格式.docx_第6页
第6页 / 共23页
设计模式大题文档格式.docx_第7页
第7页 / 共23页
设计模式大题文档格式.docx_第8页
第8页 / 共23页
设计模式大题文档格式.docx_第9页
第9页 / 共23页
设计模式大题文档格式.docx_第10页
第10页 / 共23页
设计模式大题文档格式.docx_第11页
第11页 / 共23页
设计模式大题文档格式.docx_第12页
第12页 / 共23页
设计模式大题文档格式.docx_第13页
第13页 / 共23页
设计模式大题文档格式.docx_第14页
第14页 / 共23页
设计模式大题文档格式.docx_第15页
第15页 / 共23页
设计模式大题文档格式.docx_第16页
第16页 / 共23页
设计模式大题文档格式.docx_第17页
第17页 / 共23页
设计模式大题文档格式.docx_第18页
第18页 / 共23页
设计模式大题文档格式.docx_第19页
第19页 / 共23页
设计模式大题文档格式.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

设计模式大题文档格式.docx

《设计模式大题文档格式.docx》由会员分享,可在线阅读,更多相关《设计模式大题文档格式.docx(23页珍藏版)》请在冰点文库上搜索。

设计模式大题文档格式.docx

System.out.println("

增加积分!

"

);

returnprice*0.5;

//客户端测试类

classClient

publicstaticvoidmain(Stringargs[])

MovieTicketmt=newMovieTicket();

mt.setPrice(50.00);

doublecurrentPrice;

Discountobj;

obj=newStudentDiscount();

//可通过配置文件实现

mt.setDiscount(obj);

currentPrice=mt.getPrice();

折后价为:

+currentPrice);

---------------------------------"

obj=newVIPDiscount();

publicinterfaceCount{

publicabstractvoiddiscount(doublea);

publicclassCiTicket{

privateCountdisobj;

publicvoiddiscount(doublea){

disobj.discount(a);

publicvoidsetdisobj(Countdisobj){

this.disobj=disobj;

publicclassStTicketimplementsCount{

privatedoublea;

原价为"

+a);

this.a=a*0.8;

学生票的票价为原价的8折:

+this.a);

publicclassVTicketimplementsCount{

this.a=a*0.5;

VIP会员的票价为原价的半价:

VIP会员的会员卡积分一次"

publicclassChTicketimplementsCount{

this.a=a-10;

儿童票的票价为原价减10元:

publicclassClient{

publicstaticvoidmain(String[]args){

CiTicketc=newCiTicket();

Countd=newStTicket();

Countd1=newChTicket();

Countd2=newVTicket();

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对象,请用面向对象的语言实现该场景。

现需要增加一个新的Robot类,如果传入参数R,则返回一个Robot对象,对代码进行修改并注意女娲的变化。

importjavax.swing.JOptionPane;

/**

*主要显示类

*@author陈俊生

*

*/

publicclassMain{

/**

*主方法

*@paramarg

publicstaticvoidmain(Stringarg[]){

/*

*提示输入

*/

/*System.out.println("

请大家输入你想让女娲造的人的代号:

*/

Stringstr="

;

*当输入0时退出程序

while(true){

str=JOptionPane.showInputDialog("

NvWanvWa=newNvWa();

Personperson=nvWa.madeMan(str);

person.play();

}

*男人类

classManextendsPerson{

@Override

publicvoidplay(){

//TODOAuto-generatedmethodstub

大家好,我是男人!

我来自地球!

JOptionPane.showMessageDialog(null,"

*女娲类

*简单工厂类

classNvWa{

*女娲造人方法

*@paramstr根据传递的参数进行造人

*@return

publicPersonmadeMan(Stringstr){

Personperson=null;

switch(str){

*实例化男人

case"

M"

:

person=newMan();

break;

W"

person=newWoman();

*实例化机器人

R"

person=newRobot();

default:

/*System.out.println("

输入有误,女娲没这个能力造出你需要的人!

person=newPerson();

returnperson;

*人类

classPerson{

/*privateStringname;

//姓名

privateintage;

//年龄

*/

*玩的方法

publicvoidplay(){

输入有误,我还是一坨泥巴!

女娲还没构造我!

请重试~"

};

*机器人类

classRobotextendsPerson{

大家好,我是机器人!

我来自火星!

*女人类

classWomanextendsPerson{

大家好,我是女人!

我来自水星!

2.迟到的理由。

(简单工厂和工厂模式)

说明:

根据迟到的理由不同,如:

去厕所,在路上,回家等理由。

当老师需要知道是何种理由迟到时只需传入相应的参数,现请使用简单工厂模式来模拟该过程。

此外,如果有同学新增加一个“相亲”理由,为了遵循开闭原则,请使用工厂模式模拟上述过程。

简单工厂模式

importjavax.xml.parsers.*;

importorg.w3c.dom.*;

importjava.io.*;

publicclassXMLUtilReason{

//该方法用于从XML配置文件中提取品牌名称,并返回该品牌名称

publicstaticStringgetexcuse(){

try{

//创建文档对象

DocumentBuilderFactorydFactory=DocumentBuilderFactory.newInstance();

DocumentBuilderbuilder=dFactory.newDocumentBuilder();

Documentdoc;

doc=builder.parse(newFile("

configReason.xml"

));

//获取包含品牌名称的文本节点

NodeListnl=doc.getElementsByTagName("

excuse"

NodeclassNode=nl.item(0).getFirstChild();

Stringexcuse=classNode.getNodeValue().trim();

returnexcuse;

}

catch(Exceptione){

e.printStackTrace();

returnnull;

publicabstractclassAbstractReason{

publicabstractvoidreason();

publicclassGoHomeextendsAbstractReason{

publicvoidreason(){

GoHome!

publicclassGoToiletextendsAbstractReason{

GotoToilet!

publicclassOnTheWayextendsAbstractReason{

OnTheWay!

publicclassReasonFactory{

publicstaticAbstractReasonproduceReason(Stringexcuse)throwsException

if(excuse.equalsIgnoreCase("

Toilet"

)){

System.out.println("

TheReasonFactoryproducesthereasonofToilet!

returnnewGoToilet();

elseif(excuse.equalsIgnoreCase("

Home"

TheReasonFactoryproducesthereasonofgohome"

returnnewGoHome();

OnTheWay"

TheReasonFactoryproducesthereasonofontheway!

returnnewOnTheWay();

else{

thrownewException("

Sorry!

Thereasonisnottrue!

publicclassClient_xml{

try{

AbstractReasonabstractreason;

Stringexcuse=XMLUtilReason.getexcuse();

abstractreason=ReasonFactory.produceReason(excuse);

//abstractreason=ReasonFactory.produceReason("

abstractreason.reason();

catch(Exceptione)

System.out.println(e.getMessage());

abstractreason=ReasonFactory.produceReason("

 

3.简历题目(浅克隆)

需要有一个简历类,必须要有姓名,可以设置性别和年龄,可以设置工作经历。

最终需要三份简历。

publicclassResumeimplementsCloneable

privateStringname;

privateStringsex;

privateStringage;

privateWorkExperienceworkexperience=null;

publicResume(Stringname)

this.name=name;

this.workexperience=newWorkExperience();

publicvoidsetName(Stringname)

publicvoidsetPersonalInfo(Stringsex,Stringage)

this.sex=sex;

this.age=age;

publicStringgetName()

return(this.name);

publicStringgetSex()

return(this.sex);

publicStringgetAge()

return(this.age);

publicvoidsetWorkExperience(StringworkDate,StringCompany)

workexperience.setworkDate(workDate);

workexperience.setCompany(Company);

publicWorkExperiencegetWorkExperience()

returnthis.workexperience;

publicObjectclone()

Resumeclone=null;

try

{

clone=(Resume)super.clone();

catch(CloneNotSupportedExceptione)

Clonefailure!

returnclone;

publicvoiddisplay()

Resume:

+"

"

+this.getName()+"

+this.getAge()+"

+this.getSex());

Experience:

+workexperience.getworkDate()+"

+workexperience.getCompany());

publicclassWorkExperience{

privateStringworkDate;

privateStringCompany;

publicvoidsetworkDate(StringworkDate)

this.workDate=workDate;

publicvoidsetCompany(StringCompany)

this.Company=Company;

publicStringgetworkDate()

return(this.workDate);

publicStringgetCompany()

return(this.Company);

publicstaticvoidmain(Stringargs[]){

Resumeresume,copy1,copy2;

resume=newResume("

zhangsan"

resume.setPersonalInfo("

male"

"

25"

resume.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());

陈俊生版

publicclassResumeimplementsCloneable{

privateStringse

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2