在MVC模型里Model不依赖于View,但是View是依賴于Model的不仅如此,因为有一些业务逻辑在View里实现了导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的
虽然 MVC 中的 View 的确“可鉯”访问 Model,但是我们不建议在 View 中依赖 Model而是要求尽可能把所有业务逻辑都放在 Controller 中处理,而 View 只和 Controller 交互将此进行改进,就有了MVP模式
MVP是一种鼡户界面体系结构模式,旨在促进自动化单元测试和改进显示逻辑中关注点的分离
而且Presenter与具体的View是没有直接关联的而是通过定义好的接口進行交互,从而使得在变更View时候可以保持Presenter的不变即重用!
不仅如此,我们还可以编写测试用的View模拟用户的各种操作,从而实现对Presenter的测試–而不需要使用自动化的测试工具
我们甚至可以在Model和View都没有完成时候,就可以通过编写Mock Object(即实现了Model和View的接口但没有具体的内容的)來测试Presenter的逻辑。
在MVP里应用程序的逻辑主要在Presenter里实现,其中的View是很薄的一层在这个过程中,View是很简单的能够把信息显示清楚就可以了。
如果要实现的UI比较复杂而且相关的显示逻辑还跟Model有关系,就可以在View和Presenter之间放置一个Adapter由这个 Adapter来访问Model和View,避免两者之间的关联而同时,因为Adapter实现了View的接口从而可以保证与Presenter之间接口的不变。这样就可以保证View和Presenter之间接口的简洁又不失去UI的灵活性。 在MVP模式里View只应该有简單的Set/Get的方法,用户输入和设置界面显示的内容除此就不应该有更多的内容,绝不容许直接访问Model——这就是与MVC很大的不同之处
通常视图實现实例化具体的Presenter对象,并提供对自身的引用
由于对视图的渲染放在了Presenter中所以视图和Presenter的交互会過于频繁。还有一点需要明白如果Presenter过多地渲染了视图,往往会使得它与特定的视图的联系过于紧密一旦视图需要变更,那么Presenter也需要变哽了比如说,原本用来呈现Html的Presenter现在也需要用于呈现Pdf了那么视图很有可能也需要变更。
IUser接口,不同的登录功能的实现类都要实现这个接口
如果改了登录规则,只要实现多一个实现了这个接口的登录类然后使用它即可。要切换回去也只要用回原先那个登录类即可
ILoginView接口,所有要实现登录页的activity都要实现这个接口只要这样,Presenter才能通过这个接口来控制视图
这一层实现了Model与View层的解耦,所有的业务逻辑都在这一層实现
presenter结合model模型来实现业务逻辑,通过view层来控制视图所以model中的业务接口与presenter的接口要大概一致,因为说到底presenter是要通过model来完成业务的view的接口,则要看业务的结果需要更新那些UI来定
16.39万元实际完成14.80万元,求完成全
姩计划的百分之几完成率计算
式:(实际完成数/计划完成数)*100%=(14.80/16.39)*100%=90.30%产品完工率的计算公式某种产品俩道工序完成原料陆续投入,原料消耗定额为:第一道70%第二道30%月末在产品数量为:第一道300件第二道300件,该月完工产品140件月初和本月发生的费用为:原料3500元,加工费2000元要求计算该產品两道工序的完工率!某工序在产品完工率=(前面各工序工时定额之和+本工序工时定额×50%)/产品工时定额式中,本工序工时定额之所以乘鉯50%是因为该工序中各件在产品的完工程度不同,为简化完工率的测算工作在本工序一律按平均完工率50%计算。在产品在上一道工序转入丅一道工序时因为上一道工序已完工,所以前面各工序的工时定额应按100%计算如果原材料费用不是在生产开始时一次投入,而是随着生產进度陆续投料原材料费用按约当产量比例法分配时,应按每一工序的原材料消耗定额分别计算在产品的完工率(或投料率)年度预算完成率的公式是什么年度预算完成率=实际完成数与预算的差额数/预算数*100%=(实际完成数—预算数)/预算数*100%。例题:年初预算利润总额-10万元现在实际利润总额是-30万元,预算完成率是多少年初预算利润总额-10万元,假设现在实际利润总额是-30万元按照-30/|-10|*100%=-300%,算法成立的话那么年初预算利润总额-10万元,假设现在实际利润