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

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

   首页 人人文库网 > 资源分类 > DOC文档下载

24Observer样式应用于Android框架设计.doc

  • 资源星级:
  • 资源大小:155.00KB   全文页数:7页
  • 资源格式: DOC        下载权限:注册会员/VIP会员
您还没有登陆,请先登录。登陆后即可下载此文档。
  合作网站登录: 微信快捷登录 支付宝快捷登录   QQ登录   微博登录
友情提示
2:本站资源不支持迅雷下载,请使用浏览器直接下载(不支持QQ浏览器)
3:本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

24Observer样式应用于Android框架设计.doc

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。

注意事项

本文(24Observer样式应用于Android框架设计.doc)为本站会员(baixue100)主动上传,人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知人人文库网([email protected]),我们立即给予删除!

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

copyright@ 2015-2017 人人文库网网站版权所有
苏ICP备12009002号-5