• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

2.6 《硬啃设计模式》第8章 复制不是很难

mysql 搞代码 4年前 (2022-01-09) 19次浏览 已收录 0个评论

案例: 某即时战略游戏,你训练出来各种很强的战士。 为了增加游戏的可玩性,增加了一种复制魔法。实施该魔法,可以复制任意的战士。 你会怎样考虑这个设计? 在继续阅读之前,请先认真思考并写出你的设计,这样对你更好地理解本模式将会更有帮助。 分析: 1

案例:
某即时战略游戏,你训练出来各种很强的战士。
为了增加游戏的可玩性,增加了一种复制魔法。实施该魔法,可以复制任意的战士。
你会怎样考虑这个设计?

在继续阅读之前,请先认真思考并写出你的设计,这样对你更好地理解本模式将会更有帮助。

分析:
1.无疑增加一个复制的方法能解决这个问题。
2.专门写一个复制类吗?传入一个战士,然后返回一个复制的战士,这样可行吗?这样做有以下问题:
1)游戏还在设计中,战士的品种还会不断演变,每增加一个品种,或者修改某品种的战士,复制类就需要修改代码。
2)为了复制好战士,复制类需要访问战士内部的属性,这样战士类可能需要暴露内部信息。

通过“原型”这两个中文字来理解原型模式是有点难度的,我们往往会用“原型开发”的“原型”来理解。
我们看看英文原型(Prototype)的解释:
the first design of something from which other forms are copied or developed.

本文来源gao!%daima.com搞$代*!码9网(

原型模式的要点
1.利用现成对象制作新的对象。
2.被复制的对象,需要实现clone(克隆)接口:Soldier newSoldier = oldSoldier.Clone();

类图如下

说明:
1.每种战士实现自己的复制方法,自己可以访问自己的内部信息,复制起来很方便,也不需要对外暴露内部信息。

2.增加或者修改战士的种类,只需要修改该类便可,其它代码不受影响。

请看下一文……

作者:张传波

创新工场创业课堂(敏捷课程)讲师

软件研发管理资深顾问

CMMI首席专家

《火球——UML大战需求分析》作者

《硬啃设计模式》作者

http://www.umlonline.org创办人


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:2.6 《硬啃设计模式》第8章 复制不是很难

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址