MyBatis知多少(6)表现层与业务逻辑层

 

 

 

 

 

 

 

 

 

 

 

 

 

表现层html

  表现层负责向最终用户展现应用程序的控制方式以及数据。它还要负责全部信息的布局和格式。今天,商业应用程序最流行的表现方式应该算是Web前端了,它使用HTML和JavaScript并通 过Web浏览器来知足用户的界面外观需求。前端

  Web应用程序的优点包括跨平台兼容性、易部署和可扩展。amazon.com就是Web应用程序的—个极好的例子,它容许你在线购书。这就是Web应用程序的一个绝佳应用,由于不可能要求用 户为了买一本书而去下载一个应用程序。数据库

  当须要高级的用户控件或者复杂的数据操纵时,Web应用程序一般就没法胜任了。在这些状况下,使用本机操做系统小部件(如tab、table、treeView和嵌入式对象)的富客户端就体现出了 它的优点。富客户端容许一个强大得多的用户界面,但它每每更难部署,且要达到与Web应用程序相同级别的性能和安全性须要开发人员花费更多的精力。富客户端技术的例子包括Java的Swing等。浏览器

  最近,Web应用程序和富客户端这两个概念被混合了起来,造成了所谓的“混合型客户端”, “混合型客户端”试图同时得到Web应用程序和富客户端二者的优势。一些很是小且使用了一些髙级控件的富客户端可能经过Web浏览器被悄悄地下载到用户的桌面。这个混合型的富客户端不包含任何业务逻辑,甚至可能连用户界面的布局都不是内建好的。相反,应用程序的界面外观以 及可用的业务功能都是经过一个Web服务,或者把XML用做客户端与服务器间接口的Web应用程序来配置的。这种方式惟一的缺点就是开发和部署这样的应用程序须要额外的软件。安全

  接下来固然就有了所谓混合型表现层的典型案例,即Ajax。它曾经是Asynchronous JavaScript and XML (异步JavaScript和XML)的首字母缩写,但如今全部 人都意识到它既不须要异步,也并不是只能使用XML,因此如今Ajax表明的仅仅是“一种基于Web 的富客户界面,由大量很是巧妙的JavaScript所驱动”。Ajax是使用旧技术构建内容丰富且交互性强的用户界面的一种新方法。Google很好地检释了Ajax技术,例如在Gmail、Google Maps和Google Calendar这样的应用程序中就充分利用了这种技术。服务器

MyBatis既可用于Web应用程序和富客户端应用程序,也可用于混合型应用程序。虽然表现层一般不会直接与持久化框架“交流”,但用户界面设计时的某些决定仍是会影响你对持久层的需 求。举个例子,考虑一个Web应用程序,它须要处理一个包含5000条记录的大型列表。咱们不可能须要同时显示出全部这5000条记录,并且若是咱们不是当即须要使用它们,那么同时从数据 库中加载这5000条记录也不是什么好主意。一个更好的方案多是一次只加载和显示10条记录。 这样的话,持久层就须要可以在返回数据的数量上容许必定的灵活性,甚至提供选择和获取咱们 但愿的10条记录的能力。这样就能够避免没必要要的对象建立和数据获取,减小应用程序的网络访 问量和内存需求,进而提升应用程序的性能。MyBatis容许只查询某个特定范围内的数据,这样的 特性就能够帮助咱们达到以上这些目的。网络

业务逻辑层架构

  应用程序的业务逻辑层描述了应用程序所能提供的“粗粒度”的服务。正是这个缘由,业 务逻辑层中的类有时也被称为服务类。从较高的层次来看,任何人都应该能看懂业务逻辑层中的类和方法进而明白系统到底要作什么。举个例子,在一个银行应用程序中,业务逻辑层可能就会包含名为TellerService的类,其中包括像openAccount ()、deposit () withdrawal () 和getBalance()这样的方法。这些都是很是大的功能,涉及复杂的数据库交互甚至多是与其余系统的交互。这些方法过重了,不适合放在领域类中,不然代码极可能立刻就会变得耦合、 而且一般会难以管理。解决方案就是将这些粗粒度的业务方法从与它们相关的业务对象模型中分离出来。这种业务逻辑类与对象模型类的分离有时也被称为“名词与动词的分离''。框架

  纯面向对象论者可能会说,这样的设计不够面向对象,将业务方法直接放在相关的领域类中才更加面向对象。不论哪一种方式更面向对象,能将关注点分离才是一个更好的设计选择。 其中的主要缘由仍是在于业务方法一般都很是复杂。它们一般都涉及不止一个类,处理不止 一种基础组件这些基础组件可能包括数据库、消息队列和其余系统。更重要的是,一个业务功能每每涉及许多领域类,那么该方法到底应该属于哪一个类呢, 的确难以决定。也正是因为这些缘由,粗粒度的业务功能最好仍是实现为业务逻辑层中某个类的方法。异步

  不要惧怕把那些粒度更细的业务逻辑放到相关的领域类中。业务逻辑层中那些粗粒度的服务 方法能够自由地调用内建在领域类中的细粒度的纯逻辑方法。

  在咱们的分层架构中,业务逻辑层是持久层服务的消费者。它调用持久层的方法来获取数据和修改数据。业务逻辑层也是事务定界的最佳场所,由于其中定义的粗粒度业务功能能够供许多 不一样的用户界面使用,甚至还可能被像Web服务这样的一些其余接口使用。

系列文章:

MyBatis知多少(1)

MyBatis知多少(2)

MyBatis知多少(3)

MyBatis知多少(4)MyBatis的优点

MyBatis知多少(5)业务对象模型

相关文章
相关标签/搜索