java – 如果没有代码:它只是一个智力挑战还是具体有用?
|
我的一个朋友正在讨论关于对象的状态转换的这些设计技术(他是一个 Java大师,顺便说一句),没有布尔myState成员执行,而是将myState成员声明为实现相同接口的对象老板“一个. 好吧,我太神秘了,所以你可以找到讨论here,带代码示例. 就个人而言,我对这种方法很兴奋,因为我的朋友向我解释了背后的哲学;从设计的角度来看,我也认为它非常连贯.顺便说一句,我关心的是性能和内存使用情况,因为编译时和运行时优化可能会进入游戏.由于我不了解JIT编译器和JVM内部,我很想知道更广泛的意见. 你有什么想法? 解决方法这听起来像是在询问使用状态设计模式是否具有“具体有用”的好处,我肯定是肯定的,特别是如果你的应用程序实际上很大程度上依赖于其对象的“状态”.一个流行的规范示例是视频播放器,它总是处于一种状态,并且只能根据它当前所处的状态转换到不同的状态(例如,如果它已经停止但是它可以播放它不能停止,它可以倒带,等等).虽然可以使用少数if / else / switch类型条件(if(isStopped()),play()等)相对容易地管理该特定示例,因为没有那么多状态要处理,当状态或者他们的转换规则开始变得更多或更复杂,状态模式绝对变得非常有价值,因为没有它,你的代码往往会像疯了一样积累其他东西,随着时间的推移,事情变得越来越不易读和可管理. 所以是的,一般来说,如果你发现你的对象的行为根据它们的状态而变化(如果isStopped()play()/ elseif isPlaying()stop()/ elseif(isBroken()fix())等),那么是的,请考虑使用State模式.这是一个更多的工作,但通常值得努力,并做得正确我怀疑你会发现任何显着的开销只是为了使用它. Head First Design Patterns也提供了它的方法和原因的很好的描述 – 我强烈建议将这本书拿给几乎任何编写面向对象代码的人. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- MVC Java Config – HandlerInterceptor不排除路径
- Java核心库实现AOP过程
- 哪个手机支持哪个J2ME(Java Micro Edition)规格?
- java – 有没有办法使用NamedParameterJdbcTemplate和Gener
- java – 如何复制/传递WebDriver的实例,它是否危险?
- java – 在HashMap的ArrayList中搜索HashMap
- 单元测试 – 如何有效地使用JUnit和Hibernate?
- java – 为什么maven 2尝试下载我已经拥有的依赖项?
- java使用Apache工具集实现ftp文件传输代码详解
- 为什么SpringMVC中请求的body不支持多次读取
