域对象

本文深入探讨域对象在应用程式设计中的核心作用,解释它们如何捕捉数据库的核心数据模型和业务规则,并强调分离域对象与应用程式及持久性代码的重要性。通过保持这种分离,开发者能够更轻松地理解和维护程式码,同时减少对持久性对象的依赖,降低更改的影响范围。
域对象是所有应用程式的中枢。他们捕捉了数据库的核心数据模型和应用在数据上的业务规则。在典型情况下,应用程式的大多数子系统都依赖这些通用的域对象--这意味着域对象的映射越接近数据库大纲,应用程式研发者理解和使用他们就越容易,因为他们表现了数据库中的现实"实体"和"关系"。
  如果域对象没有和应用程式的其他部分分开,你通常就得把持续性代码复制到非常多个位置。同样,如果域对象没有和持续性代码分开,你遇见的情况就是,所有使用域对象的子系统都必须知道并依赖持续性对象。对持续性对象的所有更改都必然影响整个应用程式。因此,如果没有把域对象和应用程式和持续性代码分开都是不好的设计。
### 定义 共享对象在特定的应用程序内,多个组件、模块或进程能够共同访问和使用的对象。它可以是数据对象、服务对象等,在应用程序运行过程中起到数据共享和交互的作用。例如在 Java Web 应用中,ServletContext 官方叫 Servlet 上下文,服务器会为每一个工程创建一个 ServletContext 对象,这个对象全局唯一,工程内所有的 Servlet 都共享这个对象,所以它是一种全局应用程序共享对象,可看作共享对象的一种具体形式 [^3]。 ### 用途 - **数据共享**:多个组件之间可以通过共享对象来交换数据。比如在一个 Web 应用中,不同的 Servlet 可能需要共享一些配置信息,这些信息可以存储在共享对象中,各个 Servlet 都能访问到这些数据。 - **状态管理**:用于维护应用程序的状态。例如在一个多页面的 Web 应用中,用户的登录状态可以存储在共享对象中,这样在不同的页面中都能判断用户是否已经登录。 - **服务提供**:共享对象可以封装一些公共的服务,供多个组件调用。比如一个共享的数据库连接池对象,多个数据访问模块可以通过这个对象获取数据库连接。 ### 实现方式 #### Java Web 中的实现 在 Java Web 应用中,常见的共享对象有 ServletContext、HttpSession 和 ServletRequest。 - **ServletContext**: ```java // 获取 ServletContext 对象 ServletContext context = getServletContext(); // 设置共享属性 context.setAttribute("sharedData", "This is shared data"); // 获取共享属性 String data = (String) context.getAttribute("sharedData"); ``` - **HttpSession**: ```java // 获取 HttpSession 对象 HttpSession session = request.getSession(); // 设置会话属性 session.setAttribute("userName", "John"); // 获取会话属性 String userName = (String) session.getAttribute("userName"); ``` - **ServletRequest**: ```java // 设置请求属性 request.setAttribute("message", "Hello, World!"); // 获取请求属性 String message = (String) request.getAttribute("message"); ``` #### Windows 系统中的实现 在 Windows 系统中,可以通过跨越进程边界共享内核对象来实现某种程度的共享。例如创建一个可继承的互斥对象: ```c #include <windows.h> int main() { SECURITY_ATTRIBUTES sa; sa.nLength = sizeof(sa); sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = TRUE; HANDLE hMutex = CreateMutex(&sa, FALSE, NULL); // 使用互斥对象 // ... CloseHandle(hMutex); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值