1、 MVC
考点:结构、组件、对比
MVC流程图
MVC
M(Model):模型,应用程序主体部分,表示业务数据和业务逻辑,可以为多个视图提供数据。
V(View):视图,用户看到并与之交互的界面,视图可以向模型查询业务状态、接受模型的数据更新事件并同步更新界面。
C(Controller):控制器,接收用户的输入并调用模型和视图完成用户的请求,一方面接收视图的输入,将其转为对模型特定方法的调用;一方面处理来自模型的事件,调用适当的视图反馈给用户。
优点
允许多种用户界面的扩展:视图与模型没有必然联系,都是通过控制器发生关系,这样如果要增加新类型的用户界面,需要要改动相应的视图和控制器即可,而模型这另需发生改动。
易于维护:控制器和视图可以随着模型的扩展而进行相应的扩展,只要保持一种公共的接口,控制器和视图的旧版本也可以继续使用。
功能强大的用户界面:用户界面与模型方法调用组合起来,是程序的使用更清晰,可将友好的界面发布给用户。
MVC是构建应用框架的一个较好模式,将业务处理和显示分离,将应用分为控制器、模型和视图,增加了应用的可扩展性、强壮性和灵活性。
MPV流程图
对比:View和Model完全分离,视图和模型不能直接交互,必须通过Presenter。
MPV优点:
低耦合:模型与视图完全分离,可以修改视图而不影响模型。
可以更高效地使用模型:所有的交互都发生在Presenter内部。
复用性好:可将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常有用,因为视图的变化总是比模型的变化频繁
可测试性好:如果把逻辑放在Presenter中,就可以脱离用户接口来测试这些逻辑。
MVVM流程图
对比:MVP进化而来,Presenter变成View Model,实现数据双向绑定,提升数据的一致性。
MVVM优点:数据可以实现双向绑定,当Model变化时,View-Model会自动更新,view也会自动变化。很好做到数据一致性。适合逻辑比较复杂的前端项目。
MVVM又被称作:model-view-binder模式
2、 J2EE
考点:结构、组件、持久层、ORM、多层架构
客户层:Applet,客户端的程序,它们可以直接嵌入到网页或者其他的特定容器中,并能够产生特殊的效果。
Web层: Servlet/JSP,JSP侧重于视图,相当于View,Servlet主要用于控制逻辑,类似一个Controler
业务逻辑层:EJB容器,EJB中的Bean相当于MVC中的
持久层:DAO、Hibernate、Mybatis。
构件:应用客户端构件、EJB构件、Servlets 和JSP、Applet构件。
EJB:会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(Message-Driven Bean)。
Session Bean:维护一个短暂会话,当客户端执行完成后,Session Bean及其数据会消失。
Entity Bean:维护一个持久稳定的数据,如果客户端终止或者结束服务,底层的服务会负责Entity Bean数据存储。
Message-Driver Bean:结合了Session Bean 和JMS,允许异步接收消息。
持久层:数据持久层是根据分层思想,通过建立逻辑数据操作接口,采取一定的对象/关系映射策略隐藏数据库访问代码的细节,向业务开发人员提供透明的对象持久化操作机制。
持久层设计:通常采用抽象工厂模式,可以创建一系列或相互依赖的对象而无需制定他们的具体的类。可以针对不同的数据库分别建立抽象工厂,便于数据库之间的切换。
优点
1、分离业务逻辑层和数据层,降低两者之间的耦合。
2、通过对象/关系映射向业务逻辑提供面向对象的数据访问。
3、简化数据层访问,隐藏数据库连接、数据读写命令和事务管理细节。
Hibernate、Mybatis对比
开发方面:hibernate开发,sql语句已经被封装,直接可以使用,加快系统开发; Mybatis 属于半自动化,sql需要手工完成,稍微繁琐。
Sql优化方面:Hibernate 自动生成sql,有些语句较为繁琐,会多消耗一些性能;Mybatis 手动编写sql,可以避免不需要的查询,提高系统性能。
对象管理方面::Hibernate 是完整的对象-关系映射的框架,开发工程中,无需过多关注底层实现,只要去管理对象即可;Mybatis需要自行管理映射关系。
缓存方面:Hibernate在使用二级缓存时如果出现脏数据,系统会报出错误并提示。Mybatis脏读不报错。
ORM:对象关系映射,是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。
ORM优点
1、降低学习和开发成本。
2、程序员不用再写SQL进行数据库操作。
3、减少程序代码量。
4、降低由于SQL代码质量差带来的影响。
ORM缺点
1、性能比直接用SQL差。
2、处理复杂查询比较困难。
多层架构优点
1、开发人员可以只关注整个结构中的某一层。
2、可以很容易的用新的实现来替换原有层次的实现。
3、可以降低层与层之间的依赖。
4、有利于标准化。
5、利于各层逻辑的复用。
6、扩展性强,不同的层负责不同的层面。
7、安全性高,用户端只能通过逻辑层来访问数据库层,减少了入口点,把很多危险的系统功能屏蔽了。
8、项目结构更清楚,分工更明确,有利于后期的维护升级。