博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2.6 《硬啃设计模式》第8章 复制不是很难 - 原型模式(Prototype Pattern)
阅读量:7089 次
发布时间:2019-06-28

本文共 707 字,大约阅读时间需要 2 分钟。

案例:

某即时战略游戏,你训练出来各种很强的战士。
为了增加游戏的可玩性,增加了一种复制魔法。实施该魔法,可以复制任意的战士。
你会怎样考虑这个设计?
在继续阅读之前,请先认真思考并写出你的设计,这样对你更好地理解本模式将会更有帮助。
分析:
1.无疑增加一个复制的方法能解决这个问题。
2.专门写一个复制类吗?传入一个战士,然后返回一个复制的战士,这样可行吗?这样做有以下问题:
   1)游戏还在设计中,战士的品种还会不断演变,每增加一个品种,或者修改某品种的战士,复制类就需要修改代码。
   2)为了复制好战士,复制类需要访问战士内部的属性,这样战士类可能需要暴露内部信息。
通过“原型”这两个中文字来理解原型模式是有点难度的,我们往往会用“原型开发”的“原型”来理解。
我们看看英文原型(Prototype)的解释:
the first design of something from which other forms are copied or developed.
原型模式的要点
1.利用现成对象制作新的对象。
2.被复制的对象,需要实现clone(克隆)接口:Soldier newSoldier = oldSoldier.Clone();
类图如下
原型1.png

 

说明:

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

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

 

 

 

请看下一文……
 
 
 
 
 
 
 
 
 
 
 
 

作者:张传波

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

软件研发管理资深顾问

CMMI首席专家

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

《硬啃设计模式》作者

创办人

转载地址:http://etfql.baihongyu.com/

你可能感兴趣的文章
JCreator中不能引入servlet包的解决办法
查看>>
mysql root账户被删除
查看>>
android学习笔记05
查看>>
kernsafe的istorage server对vmware vsphere的完美支持
查看>>
取n到m行
查看>>
快速理解VirtualBox的四种网络连接方式
查看>>
Git系列笔记之六:其他应用
查看>>
事务-编程式事务
查看>>
使用cobbler自动安装操作系统(CentOS版)
查看>>
[控件]自动提示 AutoCompleteTextView MultiAutoCompleteTextView
查看>>
将jsp页面改成html页面以及错误的调试
查看>>
Windows 1588服务开发
查看>>
1.gcc编译过程与原理
查看>>
iOS 不要用宏来定义你的常量
查看>>
android 成长日记 7.简易的聊天界面设计
查看>>
Vistor VTL 虚拟磁带机相关问题
查看>>
XtraBackup完全备份+增量备份文件 实现mysql热备份
查看>>
git gui 提交代码
查看>>
Please commit your changes or stash them before you merge.
查看>>
最简单常用的反射示例
查看>>