欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年G_接口设计之美_五子棋框架设计范例_ok .pdf

    • 资源ID:33387171       资源大小:2.05MB        全文页数:16页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年G_接口设计之美_五子棋框架设计范例_ok .pdf

    1 G03_接口设计之美_ 五子棋框架设计范例内容: 1. 框架(Framework):当今主流平台的幕后架构 2. 从 EIT 造形到框架 3. 框架设计范例:以五子棋为例 3.1 阶段一:从传统类(Class)造形设计出发 3.2 阶段二:继续运用EIT 造形设计 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 16 页 - - - - - - - - - 2 框架(Framework):当今主流平台的幕后架构 从 EIT 造形到框架(Framework) 前言前言: :框架 (Framework)是一个平台( 如Android 平台、iOS 平台等) ,它提供 API(即接口)来与数十万支App 对接。于是,对于框架开发是非常关键的了。 基于 EIT 造形去寻找接口、设计接口、表达接口,就能清晰定义框架的 API 了。 框架是当今主流平台的幕后架构,他强力支撑当今Apple和Google 应用商店的运作。 1. 框架(Framework):当今主流平台的幕后架构 框架(Framework)是一个平台( 如Android平台、iOS 平台等) ,它提供 API(即接口)来与数十万支App 对接。之前,我們說過了,從架構設計應該迅速落实为(可执行的)代码。其中,可执行的代码有两种:框架和App。由强龙开发框架代码;而由地头蛇开发App代码;这称为 分工模式。这就是当今Apple和 Google应用商店的分工模式。例如: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 16 页 - - - - - - - - - 3 框架(Framework)是一个平台(如Android平台、iOS 平台等),它提供 API(即接口)来与数十万支App 对接。于是,EIT造形与框架开发& 设计就息息相关了。EIT 造形的焦点在于,这个恰好是框架与App 的衔接点,也成为框架开发团队与App 开发团队的分工界线。因此,架构师可以藉由 EIT 造形来清晰地表述框架与App的接口。然后,由框架开发团队(强龙)撰写类代码,以及与相关的其它类的代码,就成为软件框架了。并由App 开发团队(地头蛇)撰写类代码,以及与相关的其它类的代码,就成为App 软件了。 2. 从 EIT 造形到框架(Framework) 通常,一个框架含有许多接口,亦即需要一群EIT 造形来清晰表述这些。其意味着,由一群 EIT 造形组合起来,成为框架的核心部分:与App 的接口。 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 16 页 - - - - - - - - - 4 在特定领域(Domain)里,将EIT 造形的部份有意义地组合起来,就成为框架(Framework)的核心部分了。其中,包括将组合起来成为框架本身;同时将组合起来成为框架的应用(Application)软件。例如,Android框架就包含了SurfaceView类,及其SurfaceHolder.Callback接口。 于此图里,SurfaceHolder.Callback扮演的角色,SurfaceView(含SurfaceHolder)扮 演 的 角 色 , 而myRenderer扮 演 的 角 色 。SurfaceView引 擎 透 过Callback接 口 , 呼 叫 了myRenderer的surfaceCreated()等函数。 虽然框架并没有包含类,但是架构师必须思考整个EIT 造形,将 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 16 页 - - - - - - - - - 5 考虑进来,才能完整而明确地表述接口。由于EIT 造形能明确地将表述出来,并清晰地传达给App开发者。于是,开发者就能开发来实现,并精确地搭配到,就能与框架一起编译, 成为可执行的App 软件(如Android的 APK)了。 / myRenderer.java / . class myRenderer implements SurfaceHolder.Callback private SurfaceHolder mHolder; private DrawThread mThread; public void surfaceCreated(SurfaceHolder holder) mHolder = holder; mThread = new DrawThread(); mThread.start(); public void surfaceDestroyed(SurfaceHolder holder) mThread.finish(); mThread = null; public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) / - class DrawThread extends Thread int degree = 36; boolean mFinished = false; DrawThread() super(); Override public void run() Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.x_xxx); Matrix matrix; degree = 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 16 页 - - - - - - - - - 6 while(!mFinished) Paint paint = new Paint(); paint.setColor(Color.CYAN); Canvas cavans = mHolder.lockCanvas(); cavans.drawCircle(80, 80, 45, paint); /- rotate - matrix = new Matrix(); matrix.postScale(1.5f, 1.5f); matrix.postRotate(degree); Bitmap newBmp = Bitmap.createBitmap( bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true); cavans.drawBitmap(newBmp, 50, 50, paint); mHolder.unlockCanvasAndPost(cavans); degree += 15; try Thread.sleep(100); catch (Exception e) void finish() mFinished = true; / ac01.java / . public class ac01 extends Activity private SurfaceView sv = null; Override protected void onCreate(Bundle icicle) super.onCreate(icicle); sv = new SurfaceView(this); myRenderer mr = new myRenderer(); sv.getHolder().addCallback(mr); LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(200, 150); param.topMargin = 5; layout.addView(sv, param); setContentView(layout); 首先,SurfaceView对象向Android的 WindowManagerService(和SurfaceFlinger)系统服务取的一个Surface,将它包装于SurfaceView里的SurfaceHolder对象里。 然 后 , 透 过Callback接 口 来 呼 叫myRenderer子 类 里 的surfaceCreated()函数,此时将该SurfaceHolder对象(的指针或参考)传递给myRenderer的对象。myRenderer子类的对象才依循 SurfaceHolder的指标而呼叫到SurfaceHolder的 lockCanvas()等函数。 以上 說明了,Android框架里含有一個 EIT 造形,就是:造形的部分。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 16 页 - - - - - - - - - 7 G03_接口设计之美_ 五子棋框架设计范例内容: 1. 框架(Framework):当今主流平台的幕后架构 2. 从 EIT 造形到框架 3. 框架设计范例:以五子棋为例 3.1 阶段一:从传统类(Class)造形设计出发 3.2 阶段二:继续运用EIT 造形设计 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 16 页 - - - - - - - - - 8 框架设计范例:以五子棋为例 前言前言: :应用框架(Application Framework)是一个平台( 如Android 平台、iOS 平台等),它提供API(即接口)来与数十万支App 对接。于是,EIT 造形与框架开发 &设计就息息相关了。 于此,将以五子棋的架构设计为例,进行两阶段的分析与设计。 第 1 阶段:先依循传统的OOAD(Object-Oriented Analysis & Design)来进行领域知识分析 &设计。OOAD 就是基于类 (Class)造形的分析&设计方法。 这是目前业界的主流方法,其最主要的缺点是:没有清晰而明确地表述出接口。 第 2 阶段:延续上阶段OOAD 的分析&设计结果,基于 EIT 造形去厘清接口 ,因而清晰定义了框架的API。 由于 EIT 造形是由类造形扩充而来,所以上述两阶段的衔接是很流畅的。 3. 框架设计范例:以五子棋為例 3.1 階段一:从传统类(Class)造形设计出发 五 子棋的 OOAD分析与设计 (图 片来源:互动百科 ) 从传统类(Class)造形设计出发,针对五 子棋进行传统的OOAD 分析与设计(Object-Oriented Analysis & Design)。其分析步骤 为: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 16 页 - - - - - - - - - 9 Step-1:找到主角,就是: 棋手首先, 寻找五 子棋 的核心 概念 ,成为类造形的内涵 。例如: 五子棋游戏的主角是 棋手 (玩家 ), 棋手 有两种: 电脑 和人;其中, 电脑棋手又 分为数个 不同棋力 等级,例如: Step-2:抽象出 抽象类 别(Super -class),就是BaseAI 類: Step-3:再增添 一种 棋手 ,HumanPlayer (人) ,而 且再度 进行 抽象, 得到: Step-4:再联想 到人之外的物棋盘(Chess Board),它必须呈 现于 UI 画面上,所以设计成为View 的子类 别,得到: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 16 页 - - - - - - - - - 10 Step-5:再从棋盘联想到相关的 概念 :棋(Chess);以及用来控制 UI 显示 的GobangActivity类别。如 下图。 Step-6:还可以 继续联想下去,就 更加 完整了。 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 16 页 - - - - - - - - - 11 3.2 阶段二:继续运用EIT 造形设计 从上 图里, 可以 看出来, 传统 基于类造形的分析与设计, 只凸显 了类(Class)和关系(Relationship),而将接口(Interface)隐藏 于类或关系里,此时EIT 造形就派上 用场了。例如, 上图的 ”棋盘 (Chess Board) ”与”棋手 (Player) ”之间是1:N 的组合关系,就隐含了一个 重要接口:可 让用户选择 多位棋手 。于是,藉由EIT 造形的来表述这个接口,而棋盘 和棋手 就是它的配角:棋盘 扮演角色,而 棋手 扮演角色,如下图:传统 上,将隐藏 起来,常常 带来许多 缺点,例如: 架构师 知道 接口的 存在,但没有 途径去 清晰地表述出来。 由于没有明确传达给开发者,徒增 开发者的 负担 ,也提 高了失误 的可能 性。由于没有 凸显 接口, 无法协助项目经理(PM) 掌握最佳 的团队分工界线,例如框架开发与App 开发的分 际。 等等。 于是,可以藉EIT 造形来 凸显 ,如下图: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 16 页 - - - - - - - - - 12 这个 IPlayer 就成为框架与App 的分工界线了。 在买主还 没来、或用 户还 没出现之前,框架团队就能先定义IPlayer接口,然后进行开发Chess Board和Line等类的代码,成为框架代码了。而等到买主 来了、或用 户出现之后,App团队才开 始动手 设计 棋手 (即的类体系),成为App 软件代码了。 由于接口(如上图的 IPlayer) 只能含有 抽象函数, 不能含有 具象函数, 所以这些抽象函数的实现代码都必须写在App 的类里。这会增加 App 开发团队的负担 ,延迟 App 开发 交付 的效率 。 框架开发团队为了提供更多的 默认 行为(Default Behavior)来让开发团队可加以复用(Reuse),就会设计 抽象类(Abstract)来具象函数,来实现这些 默认 行为。例如 下图: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 16 页 - - - - - - - - - 13 这个 BasePlayer是一个 抽样 类,内含 func()等具象函数,可撰写代码来提供默认 行为, 让各 类来复用,能 减轻 App 开发 负担 ,提 高开发 交付效率 。此 时 , BasePlayer扮 演 两 个 角 色 : 一 方 面 扮 演 造形的;另一 方面又 扮演一个 新 EIT 造形的,提供新的,就是上图里的 hook() 抽象函数,来 让 App 的类来撰写其实现代码。于是,这个 新的就封装了 原来的 IPlayer 接口, 变成框架与App 的新接口,也是 新的分工界线了。这个新界线的 优点是: 简清了 App开发者的 负担 ,因而能吸引更多 App 开发者来 使用此软件框架了。 依样画葫芦 ,再依循 EIT 造形, 继续 设计一个IChess 接口,以及设计一个Chess 抽象类,来提供框架与App 之间的,如下图: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 16 页 - - - - - - - - - 14 此时,Chess 也扮演两个角色:一方面 扮演造形的;另一方面又 扮演一个 新 EIT 造形的,提供新的,就是上图Chess 类里的 hook() 抽象函数, 来让 App 的类(如上图的 myC hess)来撰写其实现代码。 为了进一 步减轻 App 开发者的 负担 , 藉之 吸引更多 App 开发者来 使用框架,通常框架开发团队会持续增添更多的 抽象类,来提供 更贴 心的 默认 行为。例如 下图,架构师将BaseAI 和 HumainPlayer两个 抽象类提 升到框架里。 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 16 页 - - - - - - - - - 15 计算机棋手共享的默认 行为,可以写在BaseAI 抽象类里;而 人员棋手 的共享默认 行为 则写在 HumainPlayer抽象类里。至于所有棋手都共享 的默认 行为 则提升到最高层 的 BasePlayer抽象类里。如此,持续丰富 框架的 内涵 ,进一 步减轻 App 开发者的 负担 ,则框架的 价值 就愈来愈高 了。 此外,也提供给App 开发者 更多的 弹性选择空间;例如在 上图里,App开发者撰写类时,就有多种选择 了: 选择继承BaseAI 或继承 HumainPlayer抽象类:可 复用 (Reuse)这两类里的 具象函数。如 下图的 类。 如果不适 合继承上 述两个类,可 选择继承BasePlayer抽象类:可 复用这个类里的 具象函数。如 下图的 类。 如果不适 合继承上 述各个类,可 选择直 接实现 IPlayer 接口:必须 自己实现 IPlayer 里所定义的 各函数。如 下图的 类。 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 16 页 - - - - - - - - - 16 End 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 16 页 - - - - - - - - -

    注意事项

    本文(2022年G_接口设计之美_五子棋框架设计范例_ok .pdf)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开