欢迎来到天天文库
浏览记录
ID:51968215
大小:808.50 KB
页数:63页
时间:2020-03-26
《软件设计模式-体系结构-PPT讲稿 0-Software-Design-Patterns-20121030 Lec9_Visitor--Behavioral.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Lecture9.VisitorPatternBehavioral访问者模式1ContentsofthelectureIntroductionoftheVisitorPatternOfficialDiagramoftheVisitorDesignPatternDesignExampleUsingtheVisitorPatternFurtherdiscussions2IntroductionoftheVisitorPattern3Example1:taxcomputationproblem(税收问题)Example
2、1:taxcomputationproblem(税收问题)InUS,therearemanykindsoftaxes,includingenterprisetaxandindividualtax,etc.,.Thetaxescanbeexpressedbyusingahierarchyofclassesasbelow.Tocomputethetax,wecanuseaclasswithmainmethodstoinvokethetaxhierarchytogettaxrates,etc.4Example1:Tax
3、computationTaxgetData()calculateTax()Firstdesign-Foreachdifferentclass,thealgorithmisdifferentTaxComputationmainCharityTaxIndividuleTaxPoliticalOrgnBusinessTaxgetData()calculateTax()getData()calculateTax()getData()calculateTax()getData()calculateTax()Manufact
4、ureTaxEntertainmentTaxgetData()calculateTax()getData()calculateTax()FamilyTaxSingleTaxgetData()calculateTax()getData()calculateTax()ElectronicTaxAutomobileTaxgetData()calculateTax()getData()calculateTax()FamilyWithChildrenFamilyNoChildrengetData()calculateTax
5、()getData()calculateTax()5本设计的缺点。Problemsinthisdesign(drawbacks):Distributingalltheseoperationsacrossthevariousnodeclassesleadstoasystemthat'shardtounderstand,maintain,andchange.Example1:taxcomputationproblem(税收问题)6Problems(drawbacks)(cont):Forexample,Poormai
6、ntainability:Itwillbeconfusingtohavealotofvariouskindsofcodeinsomanynodes.Poorextendibility:addinganewoperationusuallyrequiresrecompilingalloftheseclasses,SeenextpageExample1:taxcomputationproblem(税收问题)7例如,在每个类中添加一个方法printTax()的时候,需要修改每一个并且重新编译每一个类TaxgetData(
7、)calculateTax()printTax()CharityTaxIndividuleTaxPoliticalOrgnBusinessTaxgetData()calculateTax()printTax()getData()calculateTax()printTax()getData()calculateTax()printTax()getData()calculateTax()printTax()FamilyTaxSingleTaxManufactureTaxEntertainmentTaxgetData
8、()calculateTax()printTax()getData()calculateTax()printTax()getData()calculateTax()printTax()getData()calculateTax()printTax()FamilyWithChildrenFamilyNoChildrenElectronicTaxAutomobileTaxge
此文档下载收益归作者所有