欢迎来到天天文库
浏览记录
ID:47154158
大小:137.00 KB
页数:7页
时间:2019-08-13
《Observer样式应用于Android框架设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Observer样式应用于Android框架设计1. Framework的反向控制反向控制(InversionofControl)是应用框架(ApplicationFramework,简称AF)魅力的泉源。其常见的实现机制有二:1) 继承(Inheritance)----这与TemplateMethod样式密切相关。2) 委托(Delegation)----这与Observer样式密切相关。Android是个完全的AF,处处可见到反向控制的机制。当你熟悉上述的两种实现机制后,就会将之对应到TemplateMeth
2、od和Observer样式。然后藉由样式来更深刻体会这些机制的设计意涵。如此,除了更能活用Android之外,也能逐渐提升你自己设计新AF的兴趣、能力和信心。2. 复习:使用继承(即TemplateMethod样式)兹复习你已经熟悉的TemplateMethod样式,如下述之范例://Student.javapublicclassStudent{privateStringm_name;privateintm_credit;Student(Stringna,intcr){m_name=na;m_credit=cr;}publicvoidprint
3、(){System.out.println(m_name+","+String.valueOf(template_computeTuition()));}publicfloattemplate_computeTuition(){if(m_credit>6)m_credit=6;returnhook_getValue(m_credit)+5000;}protectedfloathook_getValue(intcredit){return(credit-1)*500;}}//Graduate_Student.javapublicclassGraduate
4、_StudentextendsStudent{Graduate_Student(Stringna,intcr){super(na,cr);}protectedfloathook_getValue(intcredit){returncredit*700;}}//Undergraduate_Student.javapublicclassUndergraduate_StudentextendsStudent{Undergraduate_Student(Stringna,intcr){super(na,cr);}}//JMain.javapublicclass
5、JMain{publicstaticvoidmain(String[]args){intcredit=5;Graduate_Studentmike=newGraduate_Student("Mike",5);mike.print();Undergraduate_Studentlinda=newUndergraduate_Student("Linda",7);linda.print();}}这是以TemplateMethod样式来实践反向控制。3. 使用委托(即Observer样式)在TemplateMethod样式里,hookmethod的具体
6、实现是撰写在子类别里。使用委托时,则将hookmethod定义于独立的类别里,如下述的HookClass: 把hookmethod定义于另外的类别://HookClass.javapublicclassHookClass{protectedfloatgetValue(intcredit){return(credit-1)*500;}}templatemethod委托HookClass类别之对象去处理客制化的部份://Student.javapublicclassStudent{privateStringm_name;privateintm_credit
7、;privateHookClasshookObject=null;Student(Stringna,intcr){m_name=na;m_credit=cr;}publicvoidsetHook(HookClasshk){hookObject=hk;}publicvoidprint(){System.out.println(m_name+","+String.valueOf(template_computeTuition()));}publicfloattemplate_computeTuition(){if(m_credit>6)m_credit=6
8、;returnhookObject.getValue(m_credit)+5000;}}定义H
此文档下载收益归作者所有