设计模式大题Word文档格式.docx
- 文档编号:7862401
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:23
- 大小:93.59KB
设计模式大题Word文档格式.docx
《设计模式大题Word文档格式.docx》由会员分享,可在线阅读,更多相关《设计模式大题Word文档格式.docx(23页珍藏版)》请在冰点文库上搜索。
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文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 模式