关于阅读陆舟老师《Struts2技术内幕-深入解析Struts2架构设计与实现原理》一书的阅读笔记之对象的构成模型(2)

1、对象的构成分析

      作为面向对象编程最基本的构成元素,对象是由一个叫做类(Class)的概念来描述的。因此,针对对象构成分析的研究,也就转化为针对编程语言中类的构成分析。以java语言为例,我们可以对java语言中类的定义进行一些构成上的分析,如下:

public class Human {                                                                                                                  签名区

…………………………………………………………………………………………………………………………..

         privateString name;

        

         privateHead head;

                                                                                                                                                        属性区

         privateBody body;

        

         privateLeg leg;

         …………………………………………………………………………………………………………………….

         publicString printname(){

                   System.out.println(this.name);

                   returnthis.name;

         }

                                                                                                                                                         方法区

         publicvoid walk(){

                   leg.shift();

         }

         ……………………………………………………………………………………………………………………

}

我们可以看出构成一个对象的基本要求有三个:

(1)签名:对象的核心语义概括

(2)属性:对象的内部特征和状态的描述

(3)方法:对象的行为特征的描述

也就是根据构成对象的三个基本要求,我们可以将对象分为三种不同的形态和运作模式。

a:属性-行为模式

指一个对象同时拥有属性定义和方法定义。

b:属性模式

这种对象只拥有属性的定义,辅之于getter和setter方法,在java中我们通常称这种对象为JavaBean。

c:行为模式

这种模式只指构成一个对象的主体是一系列方法的定义,而并不含有属性的定义,像我们常见的servlet对象。


其中属性对象模式又称为JavaBean,作为数据存储和数据传输的载体,运行在JavaBean模式下的对象,在众多的编程层次都会被用到,并且根据作用的不同被冠以各种不同的名称。

PO(Persistent Object):持久化对象

BO(Business Object):业务对象

VO(Value Object):值对象

DTO(Data Transfer Object):数据传输对象

FormBean:页面对象

也许从形式上看,他们是一系列难记的缩写,被用于不同的业务场景和编程层次,不过有时真正让人头痛的是,有时候只是同一个对象在不同层次上表现出不同的名称,实质上是一样的,所以项目中也不会说一定定义这些对象。

对于这些属性对象而言,JavaBean自身的特性并没有发生改变,只是引入了一些额外的编程元素从而对JavaBean进行了增强。当一个对象运作在属性对象模式时,其本质是JavaBean的特性。

所以:JavaBean对象的产生主要是为了增强对象的内在特性和状态,同事构造一个数据存储和数据传输的载体。


行为对象模式我们又称之为无状态对象。是指对象的方法所表达的行为特性并不依赖于对象的内部属性的状态。而这种无状态的特性,非常适合一个请求的响应,并在方法的内部实现中进行复杂业务逻辑的处理。就像servlet,

public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the GET method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}
参数中包含了请求对象和响应对象,其实他将请求和响应作为方法的参数。所以:对象的方法定义是进行请求响应的天然载体。

2、对象关系模型

上面我们将对象构成分析,讲的是对象。那么对象与对象之间存在什么样的关系呢。

(1)从属关系:一个对象在逻辑语义上隶属于另外一个对象

(2)协作关系:对象之间通过协作来共同表达一个逻辑语义

对于从属关系又可分为归属和继承:

①归属:一本书总是有作者。

②继承

对象的协作关系在对象运行在行为对象模式时显得尤为突出。因为当一个具体的方法来进行动作响应时,我们总是会借助一些辅助对象的操作来帮助我们共同完成动作的具体逻辑。也就是说,我们会将一个动作从业务上进行逻辑划分,将不同的业务分派到不同的对象之上去执行。这就成为分层开发模式的理论依据。

所以,当我们进行对象建模的时候,总是需要根据业务情况选择一个对象建模设计的角度,而这个角度往往取决于对象在整个程序中所起的作用。例如,当我们需要进行数据传输或者数据映射时,我们应该基于对象的“属性模式”进行建模;当我们需要进行动作响应时,我们应该基于对象的“行为模式”进行建模。

Struts2技术内幕:深入解析Struts2架构设计实现原理》由国内极为资深的Struts2技术专家(网名:downpour)亲自执笔,iteye兼CSDN产品总监范凯(网名:robbin)以及51CTO等技术社区鼎力推荐。《Struts2技术内幕:深入解析Struts2架构设计实现原理》以Struts2的源代码为依托,通过对Struts2的源代码的全面剖析深入探讨了Struts2架构设计实现原理、设计理念与设计哲学,对从宏观上和微观上去了解Struts2技术内幕提供了大量真知灼见。同样重要的是,《Struts2技术内幕:深入解析Struts2架构设计实现原理》还深入挖掘并分析了Struts2源代码实现中蕴含的大量值得称道的编程技巧和设计模式,这对开发者从Struts2的设计原理上去掌握和悟透Web层开发的要点和本质提供了绝佳的指导。 《Struts2技术内幕:深入解析Struts2架构设计实现原理》主要分为3大部分,内容安排具有极强的逻辑推理性,章和章之间互相呼应且互为印证。知识准备篇首先介绍了获取、阅读和调试Struts2源代码的方法,以及Struts2源代码的组织形式;然后厘清了Web开发中极易混淆的一些重要概念,以及Struts2的核心技术、宏观视图、微观元素、配置元素等,提纲挈领地对Struts2进行了多角度的讲解。核心技术篇首先分析了Struts2中多种具有代表性的设计模式,然后对Struts2中的精华——OGNL表达式引擎和XWork框架的原理及机制进行了全面深入的分析和讲解。运行主线篇首先对Struts2的两大运行主线——初始化主线和HTTP请求处理主线进行了深入的剖析,然后对Struts2的扩展机制进行了解读和抽象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值