`
kakac001
  • 浏览: 13132 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

请教关于domain对象注入service

阅读更多
在一个domain对象中,
注入相关的service,不知道这样的设计是好还是坏。
因为这个service是这个domain对象的某个行为不可缺少的一部分.

举个例子,
在User这么一个domain对象中,
需要有一个支付这么一个行为,暂时称它为pay
在pay的时候,需要调用相关的service来完成支付的操作.


public class A{
  private PayService payService;
  
  public void pay(){
    payService.doPay(this);
 }
}



不知道这样的设计是否存在问题..
如果有问题的话,又应该如何设计呢.
本人小菜一个,望各位大大不吝赐教
分享到:
评论
8 楼 czx566 2009-01-09  
而且这样也好像容易让陷入内存泄露的风险~
7 楼 czx566 2009-01-09  
已经回答了:
   
    依赖顺序最好是从下到上,好像有一条法则~~~

    目的:比较能让人理解


代码我一直认为:第一是能让机器明白,但同时也能让他人明白~

6 楼 kakac001 2009-01-09  
to czx566
嗯.感谢您的回复,

原本项目里面的逻辑就是pay是作为User的一个行为来做的.
现在在重构的时候发现需要改变相应的pay方法,
就很自然的用到了现在的service的方式..

大概知道要怎么去改了..不过可能没那么好改,呵

对了..不知道这种service的注入会有什么不好的地方..
您有何高见呢?
5 楼 kakac001 2009-01-09  
Nightlee 写道
我认为这要看你的domain是不是一个层次的,如果上下两个层次的domain通过service调用就没问题,同一层次的肯定不行.像lz例子里的user和pay就不是两个层次的,pay更底层,就可以.

不知道是我不是我理解错了..
不是很明白你的意思..
在这边pay不是一个domain
而是User的一个行为.
4 楼 czx566 2009-01-09  
kakac001 写道
czx566 写道

乱套了~~ 依赖关系最好是一个单向的~ 一般来说应该service依赖于domain比较好 但如果domain反过来依赖service,就不是很好看了~而且代码很不容易理解~

首先谢谢您的回答


可是对于一个domian对象来说
比如例子里面的User
pay作为User的一个行为不是很正常吗.

嗯,就是写着写着,总觉得domain对象依赖service很奇怪。
所以想请教看看,
这样的方式是否是种不好的设计,
以及这种设计会有什么利弊



在我看来,就是设计时,对于方法的粒度没有把握好

user 对象的确可以有扣款 ,加余额的 方法,但这些不应该关注事务和业务~

不过设计到支付(包含事务的业务方法)这样的大粒度方法,我认为应该放到service层中才是合理的。
3 楼 Nightlee 2009-01-09  
我认为这要看你的domain是不是一个层次的,如果上下两个层次的domain通过service调用就没问题,同一层次的肯定不行.像lz例子里的user和pay就不是两个层次的,pay更底层,就可以.
2 楼 kakac001 2009-01-09  
czx566 写道

乱套了~~ 依赖关系最好是一个单向的~ 一般来说应该service依赖于domain比较好 但如果domain反过来依赖service,就不是很好看了~而且代码很不容易理解~

首先谢谢您的回答


可是对于一个domian对象来说
比如例子里面的User
pay作为User的一个行为不是很正常吗.

嗯,就是写着写着,总觉得domain对象依赖service很奇怪。
所以想请教看看,
这样的方式是否是种不好的设计,
以及这种设计会有什么利弊
1 楼 czx566 2009-01-09  
乱套了~~

依赖关系最好是一个单向的~

一般来说应该service依赖于domain比较好

但如果domain反过来依赖service,就不是很好看了~而且代码很不容易理解~

相关推荐

    领域驱动(DDD)充血模式下,domain 与 Service以及Repository的解耦---DOMAIN EVENT

    领域模型是业务逻辑的抽象表示,它包含了业务领域的实体(Entities)、值对象(Value Objects)、领域服务(Domain Services)和仓储(Repositories)等元素。在充血模式下,这些组件拥有丰富的业务逻辑,而不仅仅是...

    Domain3.6注入检测

    【标题】:“Domain3.6注入检测”通常指的是针对特定版本——Domain3.6系统进行的SQL注入或命令注入的安全检查。在网络安全中,注入攻击是黑客利用应用程序对用户输入数据的信任,向系统中注入恶意代码,以获取未经...

    Domain3.5明小子网站注入工具

    Domain3.5明小子网站注入工具正式版

    Domain对象拷贝工具类

    用于两个domain对象的拷贝,支持字段自动覆盖,选择性覆盖,选择性字段拷贝,作用:当你有多个domain对象都需要生成另外的同一个domain对象的时候这个方法就很有用了,或许存在BUG,欢迎指出

    数据库表生成domain,dao,service,controller工具

    数据库表生成domain, DAO, service, controller工具是一种高效开发辅助软件,主要针对Java Web应用程序开发。这类工具的主要目的是简化从数据库模型到应用层代码的转换过程,帮助开发者快速生成符合MVC(Model-View-...

    Domain3.6 明小子 3.6 注入 官方正版

    这里提到的"Domain3.6 明小子 3.6 注入"可能是指一个特定的安全工具或软件版本,专注于检测、预防或处理这类注入问题。"明小子"可能是一个软件品牌或开发者的名字,而"3.6"则代表该软件的第三个主要版本的第六次次要...

    Silverlight WCF RIA服务(九)Domain Service 2 源代码

    在本篇中,我们将深入探讨Silverlight中的WCF RIA(Rich Internet Application)服务,特别是关于Domain Service的第二部分源代码。WCF RIA服务是微软.NET Framework的一部分,旨在简化客户端应用程序,如...

    Define a SELinux domain for Service

    1. 在系统策略文件目录下新增ro_isn.te文件,这是定义SELinux域的主要文件,其中typero_isn,domain;声明了一个新的域类型,typero_isn_exec,exec_type,file_type;声明了该域相关的执行类型和文件类型。 2. 在...

    著名的综合注入工具Domain3.5免杀版

    【标题】:“著名的综合注入工具Domain3.5免杀版” 在网络安全领域,"Domain3.5免杀版"是一款知名的综合性SQL注入工具。这款工具主要用于测试和探测Web应用程序的安全漏洞,尤其是SQL注入漏洞。SQL注入是一种常见的...

    明小子Domain3.6

    **明小子Domain3.6**是一款专用于检测和利用SQL注入漏洞的工具,适用于网络安全研究人员和Web应用开发者,用于测试和提升网站的安全性。在IT领域,SQL注入是一种常见的网络安全威胁,通过输入恶意的SQL代码,攻击者...

    Warning! Service ro_isn needs a SELinux domain defined; please fix!.pdf

    ### SELinux权限问题详解:Service ro_isn 需要定义 SELinux Domain #### 一、背景介绍 在安卓系统中,为了确保系统的安全性与稳定性,SELinux(Security Enhanced Linux)作为一种强制访问控制机制被广泛采用。当...

    Domain3.6(很好用)

    欢迎下载Domain3.6,希望对大家有帮助 欢迎下载Domain3.6,希望对大家有帮助

    domain3.2_SQL注入漏洞扫描

    在"domain3.2_SQL注入漏洞扫描"这个主题中,我们将深入探讨SQL注入的原理、危害、检测方法以及防范措施。 SQL注入通常发生在Web应用中,当用户可以通过表单、URL参数等方式输入数据时,如果这些数据未经处理就直接...

    Domain Service, Add Service Reference

    WPF (Windows Presentaion Foundation) Application communicating with the WCF service exposed by a DomainService

    USB4 Inter-Domain Service.pdf

    《USB4 Inter-Domain Service协议》是USB Promoter Group由Apple Inc., Hewlett-Packard Inc., Intel Corporation, Microsoft Corporation, Renesas Corporation, STMicroelectronics, 和Texas Instruments等多家...

    明小子Domain3.5

    **明小子Domain3.5**是一款专为SQL注入测试设计的高效工具,它以其易用性和强大的功能在IT安全行业中受到广泛关注。SQL注入是一种常见的网络安全漏洞,攻击者可以通过输入恶意的SQL语句来获取、修改、删除数据库中的...

    oracle service_name参数

    ### Oracle Service_Name 参数详解 #### 一、概述 在Oracle数据库管理中,`service_name`是一个重要的参数,它用于标识数据库实例所提供的服务名称。通过设置正确的`service_name`,可以确保客户端应用程序能够...

    domain明小子新版

    总之,"domain明小子新版"是学习网络注入技术的优秀工具,无论是对于网络安全爱好者还是专业人士,都能从中受益,提升自己的安全防护技能。在实际使用时,建议结合其他相关资料和实践项目,以全方位提升网络安全知识...

    详细的sql注入教程

    标题和描述中提到的知识点是关于SQL注入的教程和演示文档,主要涵盖了SQL注入的基本概念、几种常用的SQL注入工具(包括啊D注入工具、NBSI注入工具、Domain注入工具)及其具体操作流程,以及PHP注入利器ZBSI。...

    controller domain service impl mapper xml 几者调用关系

    在ServiceImpl 中,我们可以看到 @Autowired 注解用于自动注入 Mapper 对象,并将其用作数据库操作。这种方式可以使得系统更加灵活和可维护。同时,我们也可以看到 @Override 注解,用于覆盖父类中的方法。 在...

Global site tag (gtag.js) - Google Analytics