`

业务逻辑层之表模块

阅读更多

在业务逻辑层中还有一种模式:表模块,在PHP的实际开发,很多时候其实用到的都是表模块模型。

 

一、概念

Table Module:处理某一数据库或视图中所有行的业务逻辑的一个实例。太抽象了!其实表模块和领域模型非常相似。表模块是以一个类对应数据库中的一个表来组织领域逻辑,而且使用单一的类实例来包含将对数据进行的各种操作程序,它与领域逻辑的主要区别在于,如果你有许多订单,领域模型对每一个订单都有一个对象,而表模块则只用一个对象来处理所有订单。

 

二、为什么要使用表模块?

表模块的优点是允许将数据与行为封装在一起,同时又可以充分利用关系数据库的优点,表面上看起来表模块与常规的对象很相似,但关键区别在于它本身没有标识符来标出它所代表的实体对象。因此其操作时都需要传入一个某种类型的标识符(例如主键)。

表模块在很大程序上依赖于表方式组织的数据,因此当你使用记录集存取表数据时应当使用这一模式。

如果领域模型中的对象与数据库中的表比较一致,可能采用基于活动记录的领域模型会更好一此。当应用程序的其他部分基于一个公用的面向表的数据结构时,表模块将比领域模型和活动记录的组合工作得更好。

 

三、简单实现表模块

<?php
//大多应用中会有一个基类,此处方便起见省略
class Order {
    private $conn;
    public function __construct() {
        $this->conn = '初始化连接,可注册表从中获取';
    }

    public function getAll() {
        return array();
    }

    public function getByConditions($conditions = array()){
        return array();
    }

    public function getOrderInfo($orderID){
        return array();
    }

    public function update( $orderID ) {
        return 0;
    }
    public function delete( $orderID ) {
        return 0;
    }
    public function insert( $orderID ) {
        return 0;
    }
}

 看完可能会说:这不是我天天在敲的代码么。确实,在实际的开发中,表模块在中小的项目中运用得比较多,编程的门槛也比较低。你可能不知道这种模式,但其实你一直在使用它。。。

 

四、小结

事务脚本比较容易理解,但系统越复杂它就越难以维护;领域模型非常规范,但要纯粹的实现它,需要面临的主要问题是对象和关系数据库之间的映射问题;表模块介于两者之间,很多开发平台对表模块和基于记录集的编程都有非常好的支持,因此,它往往是一个不错的折中选择。值得注意的是,表模块并没有给你提供完全的面向对象能力来组织复杂的领域逻辑,你不能在实例之间直接建立关联,而且多态机制也无法工作良好。

3
2
分享到:
评论
3 楼 home198979 2014-08-20  
xiaokek 写道
你讲的是《企业级应用架构模式》这本书里面的东西吗,个人感觉里面的东西有些过时了。而且中文翻译的比较生硬。

有参考此书,这是架构的基础,过时不至于吧。
2 楼 xiaokek 2014-08-19  
你讲的是《企业级应用架构模式》这本书里面的东西吗,个人感觉里面的东西有些过时了。而且中文翻译的比较生硬。
1 楼 fojut 2014-07-18  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>SyntaxHighlighter Demo Page - <?= htmlspecialchars($title) ?></title>
</head>

<body>

<?
/***********************************
** Multiline block comments
**********************************/

$stringWithUrl = "http://alexgorbatchev.com";
$stringWithOutUrl = 'hello world';

ob_start("parseOutputBuffer");      // Start Code Buffering
session_start();

function parseOutputBuffer($buf) {
    global $portal_small_code, $portal_gzcompress;
    global $PHP_SELF, $HTTP_ACCEPT_ENCODING;

    // cleaning out the code.
    if($portal_small_code && !$portal_gzcompress) {
        $buf = str_replace("    ", "", $buf);
        $buf = str_replace("\n", "", $buf);
        $buf = str_replace(chr(13), "", $buf);
    }
}

?>

<!-- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. -->

</body>
</html>

相关推荐

    082集-搭建项目框架-业务逻辑层

    本集视频教程“082集-搭建项目框架-业务逻辑层”着重讲解了如何构建一个良好的业务逻辑层,确保应用的稳定性和可维护性。业务逻辑层是应用程序的核心部分,处理数据处理、业务规则以及与用户界面和数据访问层的交互...

    基于Java日记本系统的毕业设计,表现层使用JSP技术实现,业务逻辑层使用Servlet技术实现,数据访问层使用JDBC技术实现

    表现层使用JSP技术实现,业务逻辑层使用Servlet技术实现,数据访问层使用JDBC技术实现。 最后完成了模块的划分和数据库的设计与实现,并对系统进行了测试。系统划分为日记管理模块、用户管理模块和系统管理模块。日记...

    细说业务逻辑

    数据的合法性验证和完整性检查是业务逻辑层的重要职责之一,但这是否包括所有类型的验证仍存在争议。有些开发者主张将所有验证逻辑放在业务逻辑层,而另一些则认为简单的数据类型验证可以放在数据访问层。 #### ...

    毕设&课设&项目&实训-系统的功能模块分为接口层、业务逻辑层和数据访问层。.zip

    该系统的功能模块分为接口层、业务逻辑层和数据访问层。接口层可以与用户通信并提供外部接口。系统通过界面层收集用户数据,用户进行注册、登录、浏览和评分。业务逻辑层可进行用户信息管理和电影信息管理;业务逻辑...

    基于JAVA struts+hibernate实现的网络购物系统的毕业设计,该系统采用MVC三层架构,分离了表现层、业务逻辑层和

    业务逻辑层使用Struts Action类实现各功能模块的业务逻辑,主要包括商品管理Action、购物车Action、订单Action和支付Action等。这些Action类通过Hibernate框架操作数据持久层中的数据表,完成商品信息查询、添加、修改...

    Scott Mitchell 的ASP_NET 2_0数据教程之二:创建一个业务逻辑层

    【ASP.NET 2.0 数据教程之二:创建一个业务逻辑层】 在ASP.NET 2.0中,数据访问和业务逻辑的分离是构建高效、可维护的应用程序的关键。本教程将详细介绍如何创建一个业务逻辑层(Business Logic Layer,BLL),以便...

    【王继彬】典型三层结构程序设计-第四节:业务逻辑层BLL

    在软件开发领域,三层结构(Three-Tier Architecture)是一种常见的应用程序设计模式,它将应用程序划分为三个相对独立的层次:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer,BLL)和数据访问层...

    java三层范例

    总结起来,"java三层范例"是一个基于Java的软件开发实例,它展示了如何通过用户界面层、业务逻辑层和数据访问层来组织和管理代码,以实现一个清晰、模块化的应用程序。`Test(三层)`文件很可能是这个三层架构中的各个...

    细说业务逻辑1

    在ASP.NET MVC框架中,业务逻辑通常独立于视图(View)和控制器(Controller),存在于模型(Model)部分,或者单独的业务逻辑层(Business Logic Layer,BLL)中。 业务逻辑的组成结构包括以下几个方面: 1. 领域...

    基于JAVA论坛管理系统设计的毕业设计,该系统采用三层架构,分别是展现层、业务逻辑层和数据存取层 MySQL+JSP

    该系统采用三层架构,分别是展现层、业务逻辑层和数据存取层。 展现层使用JSP技术实现,主要负责用户界面展示和用户交互。设计了用户注册、登录、发帖、回帖、搜索等多个JSP页面。业务逻辑层使用Servlet技术实现,主要...

    五层逻辑架构设计(转)

    3. **业务逻辑层** (Business Logic Layer) 4. **数据访问层** (Data Access Layer) 5. **数据和存储管理层** (Data and Storage Management Layer) 这五个层次各自承担不同的职责,通过相互协作实现复杂的应用程序...

    5-5 设计消息模块的业务层 - EMOS小程序1

    小程序消息模块业务层是小程序的核心组件之一,它负责处理小程序中的消息相关业务逻辑。在本节中,我们将详细介绍小程序消息模块业务层的设计,包括业务接口的定义、业务实现类的设计等。 一、定义Message业务接口 ...

    用户登录模块的三层实现

    模型层负责处理业务逻辑和数据管理。在用户登录场景中,这可能包括验证用户提供的用户名和密码是否匹配数据库中的记录。模型层通常会与数据库交互,执行SQL查询,如检查用户的凭证是否有效。此外,它也可能包含一些...

    层架构项目学生信息管理系统源代码

    .NET三层架构是一种常见的软件开发模式,它将应用程序逻辑分为三个独立的层次:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。这样的分层设计有利于提高...

    分层架构与业务逻辑实现方式

    当然还有其他的分层,如:表示层、服务层(服务外观层)、业务逻辑层、数据映射层、数据层等等。 二、业务逻辑实现方式 在企业级系统中最核心的层是业务层,因为企业级系统主要是与业务打交道,而业务逻辑是每个...

    实现将业务逻辑分离到业务层的struts登录示例

    在本示例中,我们将探讨如何使用Struts 1.x版本将业务逻辑分离到业务层,这是一个重要的设计原则,可以提高代码的可读性、可维护性和可测试性。MyEclipse 6.5是一个集成开发环境,它为Struts项目提供了很好的支持。 ...

    用三层架构编写的登录模块

    它将应用程序分为三个主要部分:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。这种架构有助于实现代码的解耦,提高可维护性和可扩展性。 在C# 2.0中,三...

    基于Openbiz 让PHP实现极致业务逻辑重用 _php_

    2. **业务逻辑重用**:Openbiz通过其独特的服务层和服务对象(Service Object)机制,实现了业务逻辑的高度抽象和重用。开发者可以创建可复用的服务组件,降低代码冗余,提高开发效率。 3. **数据访问对象(DAO)**...

    codesmith整站模板(MVC三层数据层模型层逻辑层)

    4. **逻辑层(BLL - Business Logic Layer)**:逻辑层是业务逻辑的实现,它调用数据层的方法,执行复杂的业务操作,并返回结果给控制器。在这个模板中,可能存在一个BLL层生成的小错误,需要开发者手动修正。 5. *...

Global site tag (gtag.js) - Google Analytics