新人求教关于面向对象设计的问题

问题描述

现在我做webmvc系统,用的orm获取对象,然后再通过service类做一些处理,转换为viewmodel返回给前台。我有一事不明,就是我通过orm获取到的对象,属于贫血类型,只是数据,没有一些方法。我在学习面向对象编程时,都会有关于一个对象好比是现实中的对象,属性和方法都有,方法就是某种行为。但是这种方式我不知道如何应用到我的编程中去。还希望有高手来解疑,谢谢。

解决方案

解决方案二:
你说的那个是DomainObject,比如一个人转账给另一个人,怎么设计这个领域对象呢?把动词和名词分析出来,动词就是转账,名词就是客户,任一个客户都有一个转账的动作完成后减少自己的余额,同时又有一个收款的动作完成后增加自己的余额,可能还会产生一条交易记录(相应表的数据增加),而我们把这些动作协调组织在一起(可能还会判断余额是否足够),就完成了一个完整的转账过程。我们有时候并不想把DomainObject的某些方法暴露出去,这时候可以专门设计DTO来进行数据的映射(你所指的贫血对象,无方法只有属性)。如何分析设计Domain层(包含数据和基元方法)和业务层(如何协调组织多个DomainObject工作和数据的持久化)是整个系统的关键
解决方案三:
该回复于2016-03-18 13:24:46被版主删除
解决方案四:
你所谓的这部分我个人理解应当是在service这块实现,但一般情况下,我们都是通过POCO(简单C#对象,也就是你说的贫血)来进行对象的属性传递,而该对象的相关业务则是对应的service来包含(这个service一般都是适用于特定POCO的),其实这种service写法只是原来的三层写法改了个名字而已,要实现你所谓的OO,那么业务对象应该与业务逻辑合二为一,也就是service层和domain层进行合并再次补充,以上仅是个人理解,不对之处还请海涵
解决方案五:

解决方案六:
诶(~ ̄▽ ̄)→))* ̄▽ ̄*)ojava...
解决方案七:
不纠结概念,个人实际项目中偏领域模型,必要的时候也会增加DTO这种东西,比如组合的对象分层还是蛮有必要的,层中各种对象的关系理理清楚,用例图画一画,该抽象(接口)的对象或者行为就提取出来
解决方案八:
感念是死的,多做几个项目,你就能理解感念

时间: 2024-08-22 14:42:59

新人求教关于面向对象设计的问题的相关文章

《面向对象设计实践指南:Ruby语言描述》目录—导读

内容提要 面向对象设计实践指南:Ruby语言描述 本书是对"如何编写更易维护.更易管理.更讨人喜爱且功能更为强大的Ruby应用程序"的全面指导.为帮助读者解决Ruby代码难以更改和不易扩展的问题,作者在书中运用了多种功能强大和实用的面向对象设计技术,并借助大量简单实用的Ruby示例对这些技术进行全面解释. 全书共9章,主要包含的内容有:如何使用面向对象编程技术编写更易于维护和扩展的Ruby代码,单个Ruby类所应包含的内容,避免将应该保持独立的对象交织在一起,在多个对象之间定义灵活的接

新人求教,刚工作,遇到一个问题

问题描述 新人求教,刚工作,遇到一个问题 在Setting里添加一个程序的开关按钮,手机是如何根据按钮的开关来确定是否执行程序的呢? 解决方案 启动时从文件中读取配置,如果不让运行,就关掉自己

Java编程那些事儿61—面向对象设计方法

前面介绍了面向对象技术的两个最基本.最重要的概念--类和对象,下面介绍一下面向对象技术的设计思路. 对于初学者来说,面向对象是学习Java语言时的第一个难点,其实面向对象只是一种思考问题的方式,或者理解为组织数据和功能的方式而已,当系统中的数据和功能都实现以后,按照数据和功能的相关性进行组织. 在使用面向对象技术设计项目时,一般的步骤如下: 1.抽象类 2.抽象类的属性和方法 3.通过对象的关联构造系统 其中步骤1和2是设计需要实现的功能,步骤3更多的和业务逻辑相关,体现设计的结构不是很多. l

PHP学习笔记之面向对象设计

  面向对象设计是php程序开发中一个很重要的内容块,如果你想成为高级php程序员我们必须知道面向对象设计具体用法与写法. 维护简单 模块化是面向对象编程中的一个特征.实体被表示为类和同一名字空间中具有相同功能的类,我们可以在名字空间中添加一个类而不会影响该名字空间的其他成员. 可扩充性 面向对象编程从本质上支持扩充性.如果有一个具有某种功能的类,就可以很快地扩充这个类,创建一个具有扩充的功能的类. 代码重用 由于功能是被封装在类中的,并且类是作为一个独立实体而存在的,提供一个类库就非常简单了.

《设计模式》学习笔记1——七大面向对象设计原则

前言 根据这一次的学习计划,系统学习设计模式之前,先系统学习和理解设计原则.面向对象设计原则有如下几类. 原则一:单一职责原则 这是面向对象最简单的原则,对于定义,引用书中所说: 单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领域中的相应职责,或者可以定义为:就一个类而言,应该只有一个引起它变化的原因 这里最重要的地方,我个人觉得应该是一个功能领域这一句. 设计的前提是思考,只有进行了思考才能谈得上设计,所以实际设计过程中最重要的还

mfc c++-新人求教,我用mfc做了一个tcp fin的端口扫描器,死后得不出结果,求大神帮忙找出问题

问题描述 新人求教,我用mfc做了一个tcp fin的端口扫描器,死后得不出结果,求大神帮忙找出问题 cpp文件 // scanDlg.cpp : implementation file// #include ""stdafx.h""#include ""scan.h""#include ""scanDlg.h""#include ""afxdialogex.h&qu

java重载与覆盖,新人求教

问题描述 java重载与覆盖,新人求教 如题Java重载与覆盖 麻烦大神给讲解一下,网上也查了资料但是还不是理解的特别透彻. 解决方案 重载是方法名一样,参数列表不同: 覆盖(重写),子类重写父类的方法,一般有Override关键字修饰: 看下这个多实践就应该能理解了.http://blog.csdn.net/fsz521/article/details/8739236 解决方案二: 方法重载:在一个类里面,相同功能乃至不同功能(必须是形式参数类型不同)的方法用同一个方法名来写的手段,例如 cl

python代码-新人求教,关于Python运用simpleguitk写打砖块游戏代码

问题描述 新人求教,关于Python运用simpleguitk写打砖块游戏代码 小弟刚学Python想自己编写一个,如何编写砖块代码和小球碰撞砖块的代码,不胜感激 解决方案 Python+pyGame 打砖块游戏 解决方案二: 你是刚学python就要编一个游戏程序了吗? 还是为了编这个游戏得用到python呢?

请问用junit怎样为下面代码编写用例呢?新人求教。最好弄个模板出来。

问题描述 请问用junit怎样为下面代码编写用例呢?新人求教.最好弄个模板出来. @RequestMapping(value = "/addAdv", produces = "text/html;charset=utf-8") @ResponseBody public String addAdvAction(HttpServletRequest request, HttpServletResponse response) { JSONObj json = new J