`
zhangyatong
  • 浏览: 2719 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

面向对象现状

 
阅读更多

书中作者发现了一个现象,很多j2ee设计背离了oo原则:认为持久对象不应该包含任何行为。

作者认为仅仅暴露getter和setter的对象不是真正的对象,一个对象应该包含除了属性外还应该包含这个对象的行为。

联想到学过的所有对面向对象编程的解释,发现貌似真是如此。面向对象编程:所有的分析、设计、开发都以对象为基础。而对象又是什么呢,对象是现实中存在的抽象,是具体实物的逻辑表现。如果对马做抽象,我们自然的会发现:它有四条腿,它可以跑。

但是工作这么久却发现,国内流行的mvc,流行的三层,很多都不是面向OO的。

很多遗留项目中分三层后,只是根据行为做了横向切分:模型层就是一个个持久化对象,控制层就是一个个action或controller,表现层就是html或者jsp,一个业务对应一个或者多个action,后面跟着多个biz,和多个dao。每个对象要么全是方法,要么全是引用,或者全是属性,或者更狠的混成一团。现在想来,这TMD根本不是面向对象啊。。。这是面向过程啊。。。

也许项目在设计初始是根据对象设计的,但是后期业务添加或者修改后,已经通过代码看不到马有几条退,马是怎么跑的。。。

这就是我看到的国内OO现状,没有人注意到代码是什么,大家都在看功能实现了没,但是这种偏离设计原则的代码,维护性真的值得思考。。。

0
0
分享到:
评论
2 楼 zhangyatong 2014-12-24  
xiaokek 写道
个人砖头,仅供引玉:
1、项目中分三层,是在系统框架层面做了符合面向对象思维的设计,它把每个业务的控制器抽象成一个个Action,这个控制器接受参数,转发请求给biz层(也有叫service层的),最后返回结果,指定视图


是啊,国内对开发要求更多的是,快速上手,快速完成功能。开发会按要求写某个逻辑的时候就去看相应代码,改完ok收工。多高效。。。项目迭代一个月后自己看写过的代码也搞不懂了,变得小心翼翼。再久一点就变成无人敢动了。好一点的会抽象些类和方法,然后下一次迭代 。但是,很少有人想过,要根据对象来实现。。。不知道到什么时候国内才会改变这种方式。。。也许“面向对象”成本比较高吧。呵呵,好好学习,谢谢@xiaokek的分析
1 楼 xiaokek 2014-12-21  
个人砖头,仅供引玉:
1、项目中分三层,是在系统框架层面做了符合面向对象思维的设计,它把每个业务的控制器抽象成一个个Action,这个控制器接受参数,转发请求给biz层(也有叫service层的),最后返回结果,指定视图。
2、而业务逻辑层(biz层),一般都是一堆业务逻辑的堆叠,接受Action给它的参数,完成指定的任务即可,需要持久化数据时,再转发给dao去查询和存取。所以biz层在代码结构层面是被抽象成用于处理真正业务逻辑的组件。

这样设计的好处是:
1、所有业务的处理全部统一为以上说明的一套完全一样的处理流程,负责具体业务逻辑开发的程序员无需考虑其他,只需关注业务逻辑代码的编写即可。
2、其他程序员看到同样结构的代码层次,更容易理解和上手。我接触到的一部分程序员看到一些不是action,biz,dao的包,因为不能迅速理解,会觉得有学习上的阻力,因而排斥。

这样设计的缺陷是:
1、因为系统业务逻辑的复杂度高和变化过快,容易在biz层陷入面向过程式的处理,过多的if语句,过于复杂的逻辑处理,导致博主所说的“混成一团”的状态。

我的理解,在业务逻辑层是有很多东西可以挖掘的,可以用表驱动设计去消灭过多的if,用各种短小只做一件事的方法来封装逻辑,减小复杂度,还有很多写出好代码的方法,不一一列举了。我觉得题主最后想表达的意思应该是大家都应该多学习学习,应该怎么样写出“好的没有异味”的代码。

相关推荐

    面向对象分析的发展现状

    ### 面向对象分析的发展现状 #### 一、面向对象概述 面向对象(Object-Oriented, OO)作为一种主流的软件开发范式,在当今软件工程领域占据着举足轻重的地位。面向对象的核心思想在于模拟现实世界中的事物,将它们...

    北大面向对象技术

    ##### 1.5 面向对象方法的发展史及现状简介 面向对象技术的发展始于20世纪70年代,最初由Simula 67编程语言引入,随后Smalltalk语言将其推广。到了80年代末至90年代初,随着C++、Java等语言的流行,面向对象技术...

    面向对象测试技术的研究

    面向对象测试技术是软件工程领域中的一个重要组成部分,其核心目标在于确保面向对象软件的质量和可靠性。本文基于《面向对象软件测试技术的研究与应用》一文,深入探讨面向对象测试的关键概念、测试层次、方法以及...

    面向对象的系统设计.part1

    本书是一本论述 面向对象设计方法的专著,其第1版于2003年由清华大学出版社出版,被国内许多大学用作研究生或高年级本科生教材,并被许多软件开发单位作为工程技术用书。本次再版,根据国内外面向对象领域理论与技术...

    面向对象分析与设计

    面向对象分析与设计是一套以对象为基础的概念框架,它支持软件工程过程中的分析与设计活动,包括面向对象方法的基本原理、主要概念以及相关的历史与现状。面向对象方法的核心在于使用对象、类、继承以及多态等概念来...

    软件工程的面向对象分析与设计

    面向对象分析与设计是软件工程中的关键步骤,它在创建高效、可维护的软件系统时起着至关重要的作用。在本案例中,我们关注的是基于B/S(Browser/Server)架构的火车售票系统,该系统利用面向对象的方法进行分析和...

    面向对象的分析方法(OOA介绍)

    与传统的结构化分析不同,OOA更侧重于对面向对象方法所需素材的归类和整理,而非仅仅关注业务现状的分析。 OOA模型包含五个层次:主题层、对象类层、结构层、属性层和服务层,以及五个活动:标识对象类、标识结构、...

    面向对象C编程

    #### 二、面向对象编程的历史与现状 尽管面向对象编程的概念已经存在多年,但它在近几十年里才成为主流的开发范式之一。C++等语言因其支持面向对象特性而被视为“新语言”,但实际上,即使使用纯ANSI C也可以实现...

    面向对象课程设计 宾馆客房管理

    面向对象课程设计的目标是让学生通过实际的项目开发,掌握软件工程中的分析、设计、编码、测试和文档编写等技能。本实例中,选取的课程设计主题是“宾馆客房管理系统”,这是一个典型的业务管理系统,旨在帮助宾馆...

    面向对象的系统设计.part2

    本书是一本论述 面向对象设计方法的专著,其第1版于2003年由清华大学出版社出版,被国内许多大学用作研究生或高年级本科生教材,并被许多软件开发单位作为工程技术用书。本次再版,根据国内外面向对象领域理论与技术...

    软件再造:面向对象的软件再工程模式(英文版)

    ### 软件再造:面向对象的软件再工程模式 #### 概述 《软件再造:面向对象的软件再工程模式》是一本经典的重构指南,它深入探讨了面向对象技术在软件重构中的应用,旨在帮助软件开发人员和项目经理更好地理解和...

    如何从面向对象迁移到面向服务

    将面向对象的遗留系统迁移到SOA环境是一项复杂的工程,需要充分考虑系统的现状以及未来的发展方向。采用合适的方法和工具可以有效降低迁移过程中的风险和成本。通过本文提出的自下而上的服务识别方法,可以在一定...

    面向对象方法实现SQL解释器.pdf

    面向对象方法实现SQL解释器.pdf 本文主要讨论了使用面向对象方法实现SQL解释器的设计思想和实现方法。在HBASE数据库管理系统中,SQL解释器是使用面向对象方法实现的。本文以HBASE*SQL为例,介绍了在“SQL+OOP”环境...

    面向对象:对思政课网络资源课程一点看法!.docx

    ### 面向对象:对思政课网络资源课程一点看法! #### 一、思政课教师使用网络课程的基础 1. **当前网络课程的普及情况**:当前,网络课程和资源课程的数量众多,这是互联网技术发展的重要成果之一。网络课程因其...

     面向对象技术 面向对象技术 面向对象技术

    面向对象技术是软件开发中的一种核心方法,它基于对象的概念,强调数据和操作数据的方法的封装,以及类的继承和多态性等特性。面向对象技术的实施在计算机科学,尤其是计算机专业教育中占据着重要地位,特别是在毕业...

    同学录系统面向对象分析报告

    同学录系统面向对象分析报告是一份详尽的文档,它涵盖了面向对象分析(OOA)和面向对象设计(OOD)的关键方面。这份报告的主要目的是为了理解用户需求,并基于这些需求构建一个高效、易于理解和维护的同学录系统。 ...

    《面向对象程序设计》教学改革与探索.pdf

    随着计算机技术的飞速发展,面向对象程序设计已成为软件开发中不可或缺的编程范式。为了适应这种趋势,《面向对象程序设计》课程作为计算机专业学生的基础课程,其教学质量直接影响到学生的专业能力培养。然而,在...

    分布式面向对象文件系统数据安全机制研究.pdf

    本文针对"分布式面向对象文件系统数据安全机制"这一主题,深入探讨了相关领域的研究现状和发展趋势。 首先,文章介绍了网络存储系统的发展趋势以及网络存储安全的基本概念和研究状况。网络存储安全主要包括网络安全...

Global site tag (gtag.js) - Google Analytics