状态与策略模式案例实验报告.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

软件设计与体系结构

软件设计与体系课程名称

软件设计与体系

课程名称

课程编号

0920116

结构

实验项目名称

状态与策略模式案例

学号

班级

姓名

专业

学生所在学院

指导教师

实验室名称地点

实验时间

实验名称:状态与策略模式案例

实验目的:状态与策略模式(ObserverPattern)是设计模式中行为模式的一种,它解决了上述具有一对多依赖关系的对象的重用问题。此模式的参与者分为两大类,一类是被观察的目标,另一类是观察该目标的观察者们。正因为该模式是基于“一对多”的关系,所以该模式一般是应用于由一个目标对象和N个观察者对象组成(当然也可以扩展为有多个目标对象,但我们现在只讨论前者)的场合。当目标对象的状态发生改变或做出某种行为时,正在观察该目标对象的观察者们将自动地、连锁地作出相应的响应行为。

通过本次实验了解观察者模式的原理。并能够运用观察者模式来进行编程。实验内容

UML类图

状态模式——汽车的变速档

策略模式-商场收银软件

程序的源代码

状态模式——汽车的变速档

publicabstractclassState{

publicvoidpull(Carwrapper){wrapper.setState(newOff());System.out.println(turningoff);

}

}

publicclassCar{privateStatecurrent;

publicCar(){

current=newOff();

System.out.println(新车生产出来了,现时空档);

}

publicvoidsetState(States){current=s;}publicvoidpull(){current.pull(this);}

}

classOffextendsState{

publicvoidpull(Carwrapper){wrapper.setState(newLow());System.out.println(挂低速);

}

}

classLowextendsState{

publicvoidpull(Carwrapper){wrapper.setState(newMedium());System.out.println(挂中速);

}

}

classMediumextendsState{publicvoidpull(Carwrapper){

wrapper.setState(newHigh());System.out.println(挂高速);

}

}

classHighextendsState{

publicvoidpull(Carwrapper){wrapper.setState(newOff());System.out.println(挂空档);

}

}

classclient{

publicstaticvoidmain(String[]args){

Carcar=newCar();car.pull();

car.pull();

car.pull();

car.pull();

}

}

策略模式-商场收银软件

packagePolicy;publicclassClient{

privateStringChoice;privatedoublePurchase;

publicClient(Stringchoice,doublepurchase){super();

Choice=choice;Purchase=purchase;

}

publicClient(Stringchoice){super();

Choice=choice;

}

publicdoublegetPurchase(){returnPurchase;

}

publicvoidsetPurchase(doublepurchase){Purchase=purchase;

}

publicStringgetChoice(){returnChoice;

}

publicvoidsetChoice(Stringchoice){Choice=choice;

}

}

packagePolicy;

publicabstractclassCashSuper{

publicabstractdoubleacceptableCash(doublemoney);

}

文档评论(0)

mph + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体上海谭台科技有限公司
IP属地上海
统一社会信用代码/组织机构代码
91310115MA7CY11Y3K

1亿VIP精品文档

相关文档