欢迎来到人人文库网! | 帮助中心 人人文库renrendoc.com美如初恋!
人人文库网
首页 人人文库网 > 资源分类 > DOC文档下载

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

  • 资源大小:155.00KB        全文页数:7页
  • 资源格式: DOC        下载权限:游客/注册会员/VIP会员    下载费用:3
游客快捷下载 游客一键下载
会员登录下载
下载资源需要3

邮箱/手机号:
您支付成功后,系统会自动为您创建此邮箱/手机号的账号,密码跟您输入的邮箱/手机号一致,以方便您下次登录下载和查看订单。注:支付完成后需要自己下载文件,并不会自动发送文件哦!

支付方式: 微信支付    支付宝   
验证码:   换一换

友情提示
2、本站资源不支持迅雷下载,请使用浏览器直接下载(不支持QQ浏览器)
3、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

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

24OBSERVER样式应用于ANDROID框架设计1FRAMEWORK的反向控制反向控制INVERSIONOFCONTROL是应用框架APPLICATIONFRAMEWORK,简称AF魅力的泉源。其常见的实现机制有二1继承INHERITANCE这与TEMPLATEMETHOD样式密切相关。2委托DELEGATION这与OBSERVER样式密切相关。ANDROID是个完全的AF,处处可见到反向控制的机制。当你熟悉上述的两种实现机制后,就会将之对应到TEMPLATEMETHOD和OBSERVER样式。然后藉由样式来更深刻体会这些机制的设计意涵。如此,除了更能活用ANDROID之外,也能逐渐提升你自己设计新AF的兴趣、能力和信心。2复习使用继承即TEMPLATEMETHOD样式兹复习你已经熟悉的TEMPLATEMETHOD样式,如下述之范例//STUDENTJAVAPUBLICCLASSSTUDENT{PRIVATESTRINGM_NAME;PRIVATEINTM_CREDIT;STUDENTSTRINGNA,INTCR{M_NAMENA;M_CREDITCR;}PUBLICVOIDPRINT{SYSTEMOUTPRINTLNM_NAME,STRINGVALUEOFTEMPLATE_COMPUTETUITION;}PUBLICFLOATTEMPLATE_COMPUTETUITION{IFM_CREDIT6M_CREDIT6;RETURNHOOK_GETVALUEM_CREDIT5000;}PROTECTEDFLOATHOOK_GETVALUEINTCREDIT{RETURNCREDIT1500;}}//GRADUATE_STUDENTJAVAPUBLICCLASSGRADUATE_STUDENTEXTENDSSTUDENT{GRADUATE_STUDENTSTRINGNA,INTCR{SUPERNA,CR;}PROTECTEDFLOATHOOK_GETVALUEINTCREDIT{RETURNCREDIT700;}}//UNDERGRADUATE_STUDENTJAVAPUBLICCLASSUNDERGRADUATE_STUDENTEXTENDSSTUDENT{UNDERGRADUATE_STUDENTSTRINGNA,INTCR{SUPERNA,CR;}}//JMAINJAVAPUBLICCLASSJMAIN{PUBLICSTATICVOIDMAINSTRINGARGS{INTCREDIT5;GRADUATE_STUDENTMIKENEWGRADUATE_STUDENTMIKE,5;MIKEPRINT;UNDERGRADUATE_STUDENTLINDANEWUNDERGRADUATE_STUDENTLINDA,7;LINDAPRINT;}}这是以TEMPLATEMETHOD样式来实践反向控制。3使用委托即OBSERVER样式在TEMPLATEMETHOD样式里,HOOKMETHOD的具体实现是撰写在子类别里。使用委托时,则将HOOKMETHOD定义于独立的类别里,如下述的HOOKCLASS把HOOKMETHOD定义于另外的类别//HOOKCLASSJAVAPUBLICCLASSHOOKCLASS{PROTECTEDFLOATGETVALUEINTCREDIT{RETURNCREDIT1500;}}TEMPLATEMETHOD委托HOOKCLASS类别之对象去处理客制化的部份//STUDENTJAVAPUBLICCLASSSTUDENT{PRIVATESTRINGM_NAME;PRIVATEINTM_CREDIT;PRIVATEHOOKCLASSHOOKOBJECTNULL;STUDENTSTRINGNA,INTCR{M_NAMENA;M_CREDITCR;}PUBLICVOIDSETHOOKHOOKCLASSHK{HOOKOBJECTHK;}PUBLICVOIDPRINT{SYSTEMOUTPRINTLNM_NAME,STRINGVALUEOFTEMPLATE_COMPUTETUITION;}PUBLICFLOATTEMPLATE_COMPUTETUITION{IFM_CREDIT6M_CREDIT6;RETURNHOOKOBJECTGETVALUEM_CREDIT5000;}}定义HOOKCLASS的子类别GRADUATEHOOK,并且让STUDENT的对象委托给GRADUATEHOOK子类别之对象//GRADUATE_STUDENTJAVAPUBLICCLASSGRADUATE_STUDENTEXTENDSSTUDENT{GRADUATE_STUDENTSTRINGNA,INTCR{SUPERNA,CR;SETHOOKNEWGRADUATEHOOK;}PRIVATESTATICCLASSGRADUATEHOOKEXTENDSHOOKCLASS{OVERRIDEPROTECTEDFLOATGETVALUEINTCREDIT{RETURNCREDIT700;}}}//JMAINJAVAPUBLICCLASSJMAIN{PUBLICSTATICVOIDMAINSTRINGARGS{INTCREDIT5;STUDENTMIKENEWGRADUATE_STUDENTMIKE,CREDIT;MIKEPRINT;}}于是,STUDENT类别的TEMPLATEMETHOD呼叫了HOOKCLASS抽象类别的GETVALUE函数,进而反向呼叫到GRADUATEHOOK子类别的GETVALUE函数。4GOF的OBSERVER样式在GOF的DESIGNPATTERNS一书里,其OBSERVER样式的架构图为图1OBSERVER样式GOF这里的SUBJECT类别就对应到上述程序代码的STUDENT类别。CONCRETESUBJECT就对应到GRADUATE_STUDENT类别。OBSERVER类别对应到HOOKCLASS。CONCRETEOBSERVER对应到GRADUATEHOOK类别。5OBSERVER样式又称为LISTENER样式上述的范例可改写为//ILISTENERJAVAPUBLICINTERFACEILISTENER{FLOATGETVALUEINTCREDIT;}//STUDENTJAVAPUBLICCLASSSTUDENT{PRIVATESTRINGM_NAME;PRIVATEINTM_CREDIT;PRIVATEILISTENERPLISNULL;STUDENTSTRINGNA,INTCR{M_NAMENA;M_CREDITCR;}PUBLICVOIDSETLISTENERILISTENERLIS{PLISLIS;}PUBLICVOIDPRINT{SYSTEMOUTPRINTLNM_NAME,STRINGVALUEOFTEMPLATE_COMPUTETUITION;}PUBLICFLOATTEMPLATE_COMPUTETUITION{IFM_CREDIT6M_CREDIT6;RETURNPLISGETVALUEM_CREDIT5000;}}//GRADUATE_STUDENTJAVAPUBLICCLASSGRADUATE_STUDENTEXTENDSSTUDENT{GRADUATE_STUDENTSTRINGNA,INTCR{SUPERNA,CR;SETLISTENERNEWGRADUATELISTENER;}PRIVATESTATICCLASSGRADUATELISTENERIMPLEMENTSILISTENER{PUBLICFLOATGETVALUEINTCREDIT{RETURNCREDIT700;}}}//JMAINJAVAPUBLICCLASSJMAIN{PUBLICSTATICVOIDMAINSTRINGARGS{INTCREDIT5;STUDENTMIKENEWGRADUATE_STUDENTMIKE,CREDIT;MIKEPRINT;}}6欣赏ANDROID里的OBSERVER样式即LISTENER样式欣赏ANDROID程序范例61画面情境撰写程序建立ANDROID程序项目//AC01JAVAPACKAGECOMMISOOPKZZ;IMPORTANDROIDAPPACTIVITY;IMPORTANDROIDOSBUNDLE;IMPORTANDROIDVIEWVIEW;IMPORTANDROIDVIEWVIEWONCLICKLISTENER;IMPORTANDROIDWIDGETBUTTON;PUBLICCLASSAC01EXTENDSACTIVITY{OVERRIDEPUBLICVOIDONCREATEBUNDLEICICLE{SUPERONCREATEICICLE;SETCONTENTVIEWRLAYOUTMAIN;BUTTONBTNBUTTONFINDVIEWBYIDRIDBUTTON;BUTTONBTN2BUTTONFINDVIEWBYIDRIDBUTTON2;BTNSETBACKGROUNDRESOURCERDRAWABLEGRAY;BTNSETONCLICKLISTENERCLICKLISTENER;BTN2SETBACKGROUNDRESOURCERDRAWABLEBYW;BTN2SETONCLICKLISTENERCLICKLISTENER_2;}ONCLICKLISTENERCLICKLISTENERNEWONCLICKLISTENER{PUBLICVOIDONCLICKVIEWV{STRINGNAMEBUTTONVGETTEXTTOSTRING;SETTITLENAMEBUTTONCLICKED;}};ONCLICKLISTENERCLICKLISTENER_2NEWONCLICKLISTENER{PUBLICVOIDONCLICKVIEWV{FINISH;}};}图2ANDROID里的LISTENER样式这里的AC01就是CONCRETEOBSERVER;而ONCLICK就是HOOKMETHOD或称为PRIMITIVEMETHOD。VIEW就是SUBJECT。而BUTTON则是CONCRETESUBJECT。

注意事项

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

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

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

网站客服QQ:2846424093    人人文库上传用户QQ群:460291265   

[email protected] 2016-2018  renrendoc.com 网站版权所有   南天在线技术支持

经营许可证编号:苏ICP备12009002号-5