会员注册 | 登录 | 微信快捷登录 支付宝快捷登录 QQ登录 微博登录 | 帮助中心 人人文库renrendoc.com美如初恋!
站内搜索 百度文库

热门搜索: 直缝焊接机 矿井提升机 循环球式转向器图纸 机器人手爪发展史 管道机器人dwg 动平衡试验台设计

24Observer样式应用于Android框架设计.doc24Observer样式应用于Android框架设计.doc -- 3 元

宽屏显示 收藏 分享

资源预览需要最新版本的Flash Player支持。
您尚未安装或版本过低,建议您

24.Observer样式应用于Android框架设计1.Framework的反向控制反向控制InversionofControl是应用框架ApplicationFramework,简称AF魅力的泉源。其常见的实现机制有二1继承Inheritance这与TemplateMethod样式密切相关。2委托Delegation这与Observer样式密切相关。Android是个完全的AF,处处可见到反向控制的机制。当你熟悉上述的两种实现机制后,就会将之对应到TemplateMethod和Observer样式。然后藉由样式来更深刻体会这些机制的设计意涵。如此,除了更能活用Android之外,也能逐渐提升你自己设计新AF的兴趣、能力和信心。2.复习使用继承即TemplateMethod样式兹复习你已经熟悉的TemplateMethod样式,如下述之范例//Student.javapublicclassStudent{privateStringm_nameprivateintm_creditStudentStringna,intcr{m_namenam_creditcr}publicvoidprint{System.out.printlnm_name,String.valueOftemplate_computeTuition}publicfloattemplate_computeTuition{ifm_credit6m_credit6returnhook_getValuem_credit5000}protectedfloathook_getValueintcredit{returncredit1500}}//Graduate_Student.javapublicclassGraduate_StudentextendsStudent{Graduate_StudentStringna,intcr{superna,cr}protectedfloathook_getValueintcredit{returncredit700}}//Undergraduate_Student.javapublicclassUndergraduate_StudentextendsStudent{Undergraduate_StudentStringna,intcr{superna,cr}}//JMain.javapublicclassJMain{publicstaticvoidmainStringargs{intcredit5Graduate_StudentmikenewGraduate_StudentMike,5mike.printUndergraduate_StudentlindanewUndergraduate_StudentLinda,7linda.print}}这是以TemplateMethod样式来实践反向控制。3.使用委托即Observer样式在TemplateMethod样式里,hookmethod的具体实现是撰写在子类别里。使用委托时,则将hookmethod定义于独立的类别里,如下述的HookClass把hookmethod定义于另外的类别//HookClass.javapublicclassHookClass{protectedfloatgetValueintcredit{returncredit1500}}templatemethod委托HookClass类别之对象去处理客制化的部份//Student.javapublicclassStudent{privateStringm_nameprivateintm_creditprivateHookClasshookObjectnullStudentStringna,intcr{m_namenam_creditcr}publicvoidsetHookHookClasshk{hookObjecthk}publicvoidprint{System.out.printlnm_name,String.valueOftemplate_computeTuition}publicfloattemplate_computeTuition{ifm_credit6m_credit6returnhookObject.getValuem_credit5000}}定义HookClass的子类别GraduateHook,并且让Student的对象委托给GraduateHook子类别之对象//Graduate_Student.javapublicclassGraduate_StudentextendsStudent{Graduate_StudentStringna,intcr{superna,crsetHooknewGraduateHook}privatestaticclassGraduateHookextendsHookClass{OverrideprotectedfloatgetValueintcredit{returncredit700}}}//JMain.javapublicclassJMain{publicstaticvoidmainStringargs{intcredit5StudentmikenewGraduate_StudentMike,creditmike.print}}于是,Student类别的templatemethod呼叫了HookClass抽象类别的getValue函数,进而反向呼叫到GraduateHook子类别的getValue函数。4.GoF的Observer样式在GoF的一书里,其Observer样式的架构图为图1Observer样式GoF这里的Subject类别就对应到上述程序代码的Student类别。ConcreteSubject就对应到Graduate_Student类别。Observer类别对应到HookClass。ConcreteObserver对应到GraduateHook类别。5.Observer样式又称为Listener样式上述的范例可改写为//IListener.javapublicinterfaceIListener{floatgetValueintcredit}//Student.javapublicclassStudent{privateStringm_nameprivateintm_creditprivateIListenerplisnullStudentStringna,intcr{m_namenam_creditcr}publicvoidsetListenerIListenerlis{plislis}publicvoidprint{System.out.printlnm_name,String.valueOftemplate_computeTuition}publicfloattemplate_computeTuition{ifm_credit6m_credit6returnplis.getValuem_credit5000}}//Graduate_Student.javapublicclassGraduate_StudentextendsStudent{Graduate_StudentStringna,intcr{superna,crsetListenernewGraduateListener}privatestaticclassGraduateListenerimplementsIListener{publicfloatgetValueintcredit{returncredit700}}}//JMain.javapublicclassJMain{publicstaticvoidmainStringargs{intcredit5StudentmikenewGraduate_StudentMike,creditmike.print}}6.欣赏Android里的Observer样式即Listener样式欣赏Android程序范例6.1画面情境撰写程序建立Android程序项目//ac01.javapackagecom.misoo.pkzzimportandroid.app.Activityimportandroid.os.Bundleimportandroid.view.Viewimportandroid.view.View.OnClickListenerimportandroid.widget.Buttonpublicclassac01extendsActivity{OverridepublicvoidonCreateBundleicicle{super.onCreateiciclesetContentViewR.layout.mainButtonbtnButtonfindViewByIdR.id.buttonButtonbtn2ButtonfindViewByIdR.id.button2btn.setBackgroundResourceR.drawable.graybtn.setOnClickListenerclickListenerbtn2.setBackgroundResourceR.drawable.bywbtn2.setOnClickListenerclickListener_2}OnClickListenerclickListenernewOnClickListener{publicvoidonClickViewv{StringnameButtonv.getText.toStringsetTitlenamebuttonclicked}}OnClickListenerclickListener_2newOnClickListener{publicvoidonClickViewv{finish}}}图2Android里的Listener样式这里的ac01就是ConcreteObserver而onClick就是hookmethod或称为primitivemethod。View就是Subject。而Button则是ConcreteSubject。
编号:201312142343217838    大小:155.00KB    格式:DOC    上传时间:2013-12-14
  【编辑】
3
关 键 词:
IS 电气 高压 110kv 220kv 550kv 800kv
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

当前资源信息

4.0
 
(2人评价)
浏览:10次
baixue100上传于2013-12-14

官方联系方式

客服手机:13961746681   
2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   

相关资源

相关资源

相关搜索

IS   电气   高压   110kv   220kv   550kv   800kv  
关于我们 - 网站声明 - 网站地图 - 友情链接 - 网站客服客服 - 联系我们
copyright@ 2015-2017 人人文库网网站版权所有
苏ICP备12009002号-5