使用状态模式(State Pattern)改变对象行为

需积分: 17 4 下载量 182 浏览量 更新于2024-09-10 收藏 84KB DOCX 举报
"状态模式(State Pattern)是一种行为设计模式,它使对象能够在运行时根据其内部状态改变其行为。这种模式将与特定状态相关的行为封装在独立的类中,使得对象可以在不同状态下表现不同行为,同时保持代码的简洁性和可扩展性。状态模式通常用于替代复杂的条件语句,使得系统更加易于理解和维护。" 状态模式的核心组成部分包括: 1. **状态接口(State Interface)**:定义了所有可能的状态以及与状态相关的操作。这些操作在不同的状态下可能会有不同的实现。 2. **具体状态类(Concrete State Classes)**:实现了状态接口,每种状态对应一个具体类,包含了该状态下对象的具体行为。 3. **上下文(Context)**:持有一个状态对象的引用,并通过这个状态对象调用相关行为。上下文是使用状态的对象,它的行为取决于当前所持有的状态对象。 在实际应用中,例如: - **运动员状态**:运动员在比赛中有正常、不正常和超常三种状态,每种状态下他的表现和行为都会不同。 - **编钟状态**:在音乐演奏中,如曾侯乙编钟,不同的钟代表不同的音调和状态,这些状态决定了编钟如何被演奏。 状态模式的优点: - **封装状态转换规则**:状态转换的逻辑被封装在状态对象中,使得状态转换变得清晰。 - **易于扩展状态**:添加新的状态只需要创建新的具体状态类,而无需修改原有代码。 - **简化代码**:状态模式通过将与状态相关的行为放入状态类,减少了条件语句,使得代码更易于理解和维护。 - **共享状态对象**:多个上下文对象可以共享同一个状态对象,减少系统中的对象数量。 然而,状态模式也存在一些缺点: - **增加类和对象数量**:每个状态都需要一个对应的类,可能导致类的数量增多。 - **复杂性**:模式的结构和实现可能较为复杂,容易造成代码混乱。 - **不完全遵循“开闭原则”**:如果需要添加新的状态或改变状态转换,可能需要修改现有的状态类或上下文类。 使用场景: - **行为依赖于状态**:当对象的行为取决于其内部状态时,状态模式非常适用。 - **替换条件分支**:当有很多根据对象状态进行决策的条件分支时,状态模式可以提供更灵活的解决方案。 实现状态模式的关键步骤: 1. 定义状态接口,明确接口中需要的方法。 2. 创建实现状态接口的各个具体状态类,每个类对应一种状态的行为。 3. 创建上下文类,持有状态对象并调用其方法以执行相应的行为。 4. 在上下文类中实现状态切换,通常通过设置上下文的内部状态字段来实现。 状态模式提供了一种优雅的方式来管理对象在其生命周期中的行为变化,使得代码更加模块化,同时也提高了系统的可扩展性和可维护性。在适当的情况下使用状态模式,可以有效地避免条件分支语句导致的代码复杂性。
2016-01-25 上传
正常情况下,Win7/Win8.1用户需要先在当前系统基础上执行Win10升级安装,才能够保证升级后自动激活。本文给出跳过升级过程,直接全新安装Win10并激活系统的方法。针对那些想要升级Win10,但想直接全新安装Win10,而不想执行漫长的升级过程的Win7/Win8.1用户。即适用于具有以下要求和条件的用户: ① 正在使用Win7/Win8.1系统; ② 没有升级过Win10;(如果你已经升级过并且升级后已经激活,那么直接全新安装同一个版本Win10就可以了,不必采用下文方法;) ③ 想直接格式化全新安装Win10并且激活,或者想直接再安装一个Win10组成双系统并激活;(如果你想保留现有软件和文件,直接在当前系统中运行setup安装即可,不必采用下文方法。) 当然,你还需要保证当前的Win7/Win8.1系统已经激活。并且保证所使用的Win10镜像与当前的Win7/Win8.1系统相匹配。关于系统激活状态查看方法以及升级前后的版本对应关系。 原理简析: 从Win7/Win8.1免费升级Win10,安装程序会对当前的Win7/Win8.1的系统版本和激活状态进行检测,并生成一份检测报告。在升级到Win10后,系统会根据这份报告来决定是否自动激活,并报告给微软服务器认证,认证通过后会准许激活。激活的同时,微软服务器也就将你的电脑记录下来了。之后你再全新安装Win10时,联网情况下就会自动激活。 那么,避开升级过程,直接全新安装Win10并激活的方法其实就很简单了:在Win7/Win8.1系统中直接将安装程序生成的报告文件(这个文件在正式升级前已生成)保存下来,然后全新安装Win10,安装完成后再将报告文件放到正确的目录,重启电脑(之后可能需要你手动点击激活按钮)就会自动激活了。 本方法与正常执行升级安装效果相同:微软服务器同样会记录激活信息,再次重新安装后不用任何操作,联网会自动激活。 具体操作方法: 1、在Win7/Win8.1系统中,打开你下载的Win10 ISO系统镜像,在Sources目录中找到gatherosstate.exe程序,把它复制到桌面。 2、双击gatherosstate.exe,稍等片刻会在桌面生成名为GenuineTicket.xml的文档。这份文档就是当前系统激活状态验证信息了,保存下来。感兴趣的话可用记事本打开,是用XML标记语言进行描述的。 3、用你熟悉的方法全新安装Win10,注意一定要保证(Win7/Win8.1 <—> Win10)前后版本对应关系要正确,在安装时凡是要求输入密钥的地方一律跳过。 4、安装完成后,按键盘Windows徽标键+R键,打开运行,输入 %ProgramData%\Microsoft\Windows\ClipSVC\GenuineTicket(直接复制粘贴) 点确定即可打开目录。然后将保存的GenuineTicket.xml复制到这个目录中。 5、重启电脑,确保电脑已联网。稍等片刻或者在系统属性中手动点击“立即激活”按钮即可。