系统架构
robertXin
不为写代码而写代码
展开
-
企业架构之页面控制器
在前端控制器博客中说到前端控制器比较复杂,不适用于相对的小项目,那如何以最佳方式为适度复杂的WEB应用程序构建控制器,从而既能避免代码重复,又能实现重用性和灵活性? 一、概念Page Controller很简单,就是接受来自页面请求的输入,调用请求对模型执行操作以及确定应用于结果页面的正确视图。分隔高度逻辑和所有视图相关代码。 二、为什么要用页面原创 2014-10-29 14:26:03 · 608 阅读 · 0 评论 -
对象关系行为模式之工作单元
一、概念Unit of Work:维护受业务事务影响的对象列表,并协调变化的写入和并发问题的解决。其UML结构大致如下:工作单元记录在业务事务过程中对数据库有影响的所有变化。操作结束后,作为一种结果,工作单元了解所有需要对数据库做的改变,统一对数据库操作。 二、为什么要使用工作单元?如果没有使用工作单元,可以在每次修改对象模型时对数据库对得相应修改,但这样会产生大量规模...2014-08-27 09:40:21 · 223 阅读 · 0 评论 -
对象关系行为模式之标识映射
HELLO!架构 一、概念identity Map:通过在映射中保存每个已经加载的对象,确保每个对象只加载一次,当要访问对象的时候,通过映射来查找它们。其实在数据源架构模式之数据映射器代码中有提及到标识映射,Mapper类的getFromMap方法就是实现标识映射的实现。 二、为什么要使用标识映射?在数据源架构模式之数据映射器中//client代码 ...2014-08-21 09:42:09 · 395 阅读 · 0 评论 -
数据源架构模式之数据映射器
前面分别介绍了数据源架构模式之表数据入口、数据源架构模式之行和数据入口数据源架构模式之活动记录,相较于这三种数据源架构模式,数据映射器显得更加“高大上”。 一、概念数据映射器(Data Mapper):在保持对象和数据库(以及映射器本身)彼此独立的情况下,在二者之间移动数据的一个映射器层。概念永远都是抽象的,简单的说,数据映射器就是一个负责将数据映射到对象的类数据。 二、为什...2014-08-11 09:47:50 · 301 阅读 · 0 评论 -
数据源架构模式之活动记录
hello!架构一、概念活动记录(Active Record):一个对象,它包装数据库表或视图中某一行,封装数据库访问,并在这些数据上增加了领域逻辑。对象既有数据又有行为。活动记录使用直截了当的方法,把数据访问逻辑置于领域对象中。 二、实现简单活动记录活动记录在php许多框架中都有应用,如cakephp。<?php/** * 行数据入口类 */c...2014-08-05 09:37:19 · 183 阅读 · 0 评论 -
数据源架构模式之行数据入口
注:看不懂的请勿踩,此文章非针对java,java爱好者可直接略过。 一、概念行数据入口(Row Data Gateway):充当数据源中单条记录入口的对象,每行一个实例。 二、简单实现行数据入口为了方便理解,还是先简单实现:<?php/** * 行数据入口类 */class OrderGateway { /*定义元数据映射*/ ...2014-07-31 09:42:12 · 450 阅读 · 0 评论 -
数据源架构模式之表数据入口
数据源架构模式有四种:表数据之口,行数据入口,活动记录和数据映射器。在了解它们之前,需对领域模型模式有一定的了解,可先参看业务逻辑层之事务脚本与领域模型和业务逻辑层之表模块 一、概念表数据入口(Table Data Gateway):充当数据库表访问入口的对象。一个实例处理表中所有的行(有没有想起表模块)。表数据入口包含了用于访问单个表或视图的所有SQL,如CRUD等...2014-07-30 09:29:16 · 194 阅读 · 0 评论 -
业务逻辑层之表模块
在业务逻辑层中还有一种模式:表模块,在PHP的实际开发,很多时候其实用到的都是表模块模型。 一、概念Table Module:处理某一数据库或视图中所有行的业务逻辑的一个实例。太抽象了!其实表模块和领域模型非常相似。表模块是以一个类对应数据库中的一个表来组织领域逻辑,而且使用单一的类实例来包含将对数据进行的各种操作程序,它与领域逻辑的主要区别在于,如果你有许多订单,领域模型对每一个订...2014-07-18 09:36:53 · 388 阅读 · 0 评论 -
业务逻辑层之事务脚本与领域模型
在前面的博客中,已了解了前端控制器,页面控制器,应用控制器这三种表现层模式,如果说它们精心安排了外部世界与系统内部的通信,那么业务逻辑层的工作则是处理应用程序的业务部分。业务逻辑层应当远离那些外部的“噪音”。业务逻辑是整个应用程序的根本目的所在,系统的其它部分都是为这部分服务的。这里介绍两种经常使用的领域逻辑模式:事务脚本模式和领域模型模式。 一、事务脚本 1.1 概念T...2014-07-11 09:48:42 · 566 阅读 · 0 评论 -
企业架构之页面控制器
在前端控制器博客中说到前端控制器比较复杂,不适用于相对的小项目,那如何以最佳方式为适度复杂的WEB应用程序构建控制器,从而既能避免代码重复,又能实现重用性和灵活性? 一、概念Page Controller很简单,就是接受来自页面请求的输入,调用请求对模型执行操作以及确定应用于结果页面的正确视图。分隔高度逻辑和所有视图相关代码。 二、为什么要用页面控制器?其实这...2014-06-23 10:59:04 · 136 阅读 · 0 评论 -
企业架构之应用控制器
在前端控制器中说到执行命令时,是用命令对象自己调用视图,如果系统的规模较小,可以如此。但这并不是最佳的选择,最好是尽可能地将命令和视图分离开来。 一、概念应用控制器负责映射请求到命令,并映射命令到视图。这种分离意味着可以更加容易地改变视图(即模板)而不用改动核心代码。同时,也可以改变应用程序的流程而不需要修改核心部分的代码。通过将Command分离出来,可以更加容易地把同一个Comm...2014-06-20 09:33:10 · 127 阅读 · 0 评论 -
企业架构之前端控制器
一、概念前端控制器模式用一个中心来处理所有到来的请求,最后调用视图将结果呈现给用户。此模式是Java企业应用的核心模式之一,但在PHP中并没有受到广泛的喜爱,部分原因是初始化前端控制器所需要的开销会导致系统性能下降。 二、为什么要使用前端控制器?(1)当请求可以发送到系统中多个地方时,很难避免代码重复。例如你可能需要验证用户、检查参数,多个页面都要执行这些操作,如果不...2014-06-17 10:34:28 · 143 阅读 · 0 评论 -
PHP架构之注册表
啥是注册表模式?其实很简单!注册表的作用是提供系统级别的对象访问功能。我们在编码时通常把“全局变量是不好的”当做信条。不过,凡事都有两面性,全局性的数据访问非常具有吸引力。 问题来了:大多系统都分为几个层,每个层都只通过事先定义好的通道和相邻的层交流。对层的分享使程序变得灵活,替换或修改每个层可以最小化对系统其他部分的影响。但当你需要在一个层中获取不相邻另一个层所需要的信息时,该...2014-06-10 10:35:14 · 167 阅读 · 0 评论 -
PHP架构之注册表
啥是注册表模式?其实很简单!注册表的作用是提供系统级别的对象访问功能。我们在编码时通常把“全局变量是不好的”当做信条。不过,凡事都有两面性,全局性的数据访问非常具有吸引力。 问题来了:大多系统都分为几个层,每个层都只通过事先定义好的通道和相邻的层交流。对层的分享使程序变得灵活,替换或修改每个层可以最小化对系统其他部分的影响。但当你需要在一个层中获取不相邻另一个层所需原创 2014-10-29 14:04:55 · 698 阅读 · 0 评论 -
企业架构之前端控制器
一、概念前端控制器模式用一个中心来处理所有到来的请求,最后调用视图将结果呈现给用户。此模式是Java企业应用的核心模式之一,但在PHP中并没有受到广泛的喜爱,部分原因是初始化前端控制器所需要的开销会导致系统性能下降。 二、为什么要使用前端控制器?(1)当请求可以发送到系统中多个地方时,很难避免代码重复。例如你可能需要验证用户、检查参数,多个页面都要原创 2014-10-29 14:08:46 · 593 阅读 · 0 评论 -
企业架构之应用控制器
在前端控制器中说到执行命令时,是用命令对象自己调用视图,如果系统的规模较小,可以如此。但这并不是最佳的选择,最好是尽可能地将命令和视图分离开来。 一、概念应用控制器负责映射请求到命令,并映射命令到视图。这种分离意味着可以更加容易地改变视图(即模板)而不用改动核心代码。同时,也可以改变应用程序的流程而不需要修改核心部分的代码。通过将Command分离出来,可以更加容易地把同一个C原创 2014-10-29 14:24:11 · 458 阅读 · 0 评论 -
对象关系行为模式之延迟加载
形象化设计模式实战 HELLO!架构 一、概念Lazy Load:一个对象,它虽然不包含所需要的所有数据,但是知道怎么获取这些数据。延迟加载貌似很简单,就是在数据需要时再从数据库获取,减少数据库的消耗。但这其中还是有不少技巧的。 二、实现延迟加载实现Lazy Load主要有四种方法:延迟初始化、虚代理、值保持器和重影。 (1)延迟初始化(Lazy...2014-09-03 09:42:40 · 176 阅读 · 0 评论