201424070139熊康-状态模式.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
201424070139熊康-状态模式

《软件模式》课程论文《状态模式应用分析》姓名:熊康 学号:201424070139班级:2014软件工程 2017年 5 月 8 日1.1摘要状态模式是一种较为复杂的设计模式,它用于解决系统中复杂对象的状态装换以及不同状态下行为的封装问题,当系统中某个对象存在多个状态,这些状态之间可以进行转换,而且对象在不同状态下行为不想同时可以使用状态模式,状态模式将一个对象的状态从该对象中分离出来,使得其状态可以灵活变化,且对于客户来说,用户无须关心对象状态的转换以及对象所处的当前状态,无论对于何种状态的对象,客户端都可以一致处理。2.1关键字面向对象;java接口;接口编程;状态。3.1开发工具Eclipse java语言开发4.1模式定义允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。状态模式是一种对象行为型模式。英文定义“Allow an object to alter its behavior when its internal state changes. The object will appear to change its class.”5.1状态模式结构a、Context(环境类)环境类又称为上下文类,它是拥有状态的对象,但是由于其状态存在多样性且在不同状态下对象的行为有所不同,因此将状态独立出去形成单独的状态类。在环境类中维护一个抽象状态类State的实例,这个实例定义当前状态,在具体实现时,它是一个State子类的对象,可以定义初始状态。b、State(抽象状态类)抽象状态类用于定义一个接口以封装与环境类的一个特定状态相关的行为,在抽象状态类中声明了各种不同状态对应的方法,而在其子类中实现了这些方法,由于不同状态下对象的行为可能不同,因此在不同子类中方法的实现可能存在不同,相同的方法可以写在抽象状态类中。c、ConcreteState(具体状态类)具体状态类是抽象状态类的子类,每一个子类实现一个环境类的一个状态相关的行为,每一个具体状态类对应环境的一个具体状态,不同的具体状态类其行为有所不同。6.1装饰模式实例:某纸牌游戏软件中,人物角色具有入门级(primary )、熟练级(secondary)、高手级 (professional)和骨灰级(final)四种等级,角色的等级与其积分相对应、游戏胜利将增加 积分,失败则扣除积分。入门级具有基本的游戏功能 play(),熟练级增加了游戏胜利积分 加倍功能 doublescore(),高手级在熟练级基础上再增加换牌功能 changecards() ,骨灰级在 高手级基础上再增加偷看他人的牌功能 peekcared()。现在使用状态模式来设计该系统, 绘制类图并编程实现。6.1.1代码分析CharacterRole(环境类)代码:publicclass CharacterRole {private AbstractState state;private String name;public CharacterRole(String name){=name;this.state=new PrimaryState(this);System.out.println(+注册成功);System.out.println(********************);}publicvoid setState(AbstractState state){this.state=state;}public AbstractState getState(){returnthis.state;}public String getName(){;}//基本功能publicvoid play(intscore,intshengfu){state.play(score, shengfu);}//换牌功能publicvoid changeCards(intscore,intshengfu){state.changeCards(score, shengfu);}//偷看别人的牌publicvoid peekCards(intscore,intshengfu){state.peekCards(score, shengfu);}}AbstractState(抽象状态类)代码:publicabstractclass AbstractState {protected CharacterRole role;protectedintpoint;protected String stateName;publicabstractvoid checkState(intscore);//基本功能publicvoid play(intscore,intshengfu){if(sheng

文档评论(0)

a888118a + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档