`
spxsjd
  • 浏览: 16482 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

三思面向对象

阅读更多

1 )、从编码习惯思考面向对象

示例: public boolean insertCorporation(Corporation corporation);

这是一个接口 CorporationService 里的方法,此接口主要用于管理系统里相关的公司资料,包括新增、编辑公司信息等。方法 insertCorporation 用于新增公司资料,乍一看此方法型别符合逻辑,没有什么问题。但是,当我们仔细思考, insert 这个操作语义是我们通常在业务上所说的“新增”么?笔者觉的有待商酌。 insert 在软件开发领域里,更多地是表示数据的插入操作,一般指 DAO 模式里的数据插入方法。

  谈到这里,读者可能要问?笔者不是说“面向对象”么,怎么谈什么语义!但是,笔者想强调的是,这里的问题看似很简单,其实是关系到对“面向对象”的深知熟解。笔者认为:此处采用“ insert ”签名方法,实际是传统的面向过程或者说面向数据的思维习惯,“面向对象”思维是对真实世界在软件世界的映射和虚拟,它提倡软件类名、数据对象名、操作名源于真实世界,当然也加工生产虚拟的对象和操作。

也许有人认为笔者小题大做了,也许举例不太清晰,但常言说得好:“一叶知秋”,这些的小瑕疵里透露出的是编程思维习惯:面向对象必须从细节做起,从思维和行为做起

 

2 )、从类的职责上思考面向对象

参与过多个项目的开发,最多发现的一个典型模式是:数据对象,一种仅含有数据属性及其 get/set 方法的类。很多次,笔者也默认了这个做法。但是在一次项目重构中,作者给一数据类稍微增加一些要操作类属性的方法提供给别的类使用,结果听到了反对声音。

这样做真的不妥么?相反,笔者认为应该很少存在纯粹的数据类,“面向对象”划分类的最基本原则就是基于职责,一个类因职责而生,而且可能因为一些职责而设计出一些类来 。笔者认为,跟某数据类属性极其相关的职责、或者针对其数据简单的基本的操作就应该是数据类的。

这里也许就是一直在争论的“失血模型”、“有血模型”等的问题,没有定论。但是,笔者认为:职责是面向对象的根本要素,每个类都应该有简单、明确、单一的职责,这样才能开发出结构合理、易理解和维护的系统

 

3 )、“面向对象”是万金油么?

不是,面向对象开发技术带来很多好处,比如系统可理解性好、可维护性高、可重用性和可扩展性高等。但是纯粹的面向对象,前期开发成本是很高的,有更高的设计要求,需要更好地进行面向对象思考和分析;同时,按照目前的开发技术来看,有时候不能完全解决系统的性能“瓶颈”

a 对于许多高性能、大规模并发、分布式计算的应用,更加强调面向过程 \ 线程的思维 ,这时候虽然采用了对象编码来实现应用,但是思维的关注点已经不是对象,分析和设计的中心是计算的过程。常见的使用场景有:利用存储过程执行业务逻辑(笔者曾参与个项目,有时候业务逻辑的操作大部分在存储过程里执行)、直接针对数据库计算;高并发系统多线程编程时,在设计上也更关注线程及其交互。

b 、在开发成本方面,首先目前的面向对象数据库还不成熟 ,利用一些新的面向对象数据库技术,势必提高开发难度。其次, 纯粹的面向对象,也需要良好的架构和设计,更好地理解业务 ,对设计开发人员的要求更高;而且“好的代码是重构出来的”

c 、在适用场景上,目前面向对象编程语言在嵌入式应用中还不太适应 。传统的直接基于硬件编码的应用大都还是采用面向过程 \ 结构编程语言,特别是单片机、数控应用等。笔者认为主要原因是:面向对象语言的性能问题,采用对象语言编码的程序,文件较大,运行时空间暂用多,速度较慢。、

 

谈论的不多,笔者在这里采用从行动到思维,再过渡到原因的方式关注了一次面向对象。正所谓:知行合一,笔者认为,对待面向对象 ,我们也应象处理生活中的重要事情一样,要在如何做、怎么想、为什么上多下些功夫 。而且也只有在不断的思考和总结之后,我们才能有更多发现和收获,才能提高,才能将面向对象技术有的放矢、更加合理地应用在生产中。寥寥数字,言简意切,希能与读者共勉。

 

分享到:
评论
3 楼 kqy929 2009-08-13  
很透切,我会时常再来拜读。
2 楼 wangysh 2009-08-10  
讲得很深入,多读几遍
1 楼 ziyoo0830 2009-08-07  
很深入!!!

相关推荐

    上海新三思PowerTest注册机

    上海新三思是一家可能专注于材料测试设备和软件开发的公司,"拉力机"是他们提供的硬件设备,"POWERTEST"是其配套的软件,"三思"可能是指公司的品牌或产品系列,而"试验机"则表明该软件是用于各种力学性能测试的。...

    Oracle入门教程.三思笔记.一步一步学Oracle

    2012.9.Oracle三思笔记合集,供大家下载学习。压缩包里共32个PDF或DOC文件,都是整理版的,非常好阅读,谁下谁知道。 [三思笔记]drbd入门与应用.pdf [三思笔记]Linux5版本安装Oracle11gR2.pdf [三思笔记]Linux平台...

    三思笔记之涂抹ORACLE PDF版 part01

    三思笔记之涂抹ORACLE PDF版 三思笔记之涂抹ORACLE PDF版 三思笔记之涂抹ORACLE PDF版 三思笔记之涂抹ORACLE PDF版 三思笔记之涂抹ORACLE PDF版

    三思笔记\[三思笔记]全面学习MySQL Proxy特性.pdf

    三思笔记\[三思笔记]全面学习MySQL Proxy特性.pdf

    三思oracle笔记包

    三思oracle笔记包 包含: Linux5版本安装Oracle11gR2 ORACLE 10gR2 RAC环境增加及删除节点 Oracle+RAC数据库配置DataGuard RMAN管理ORACLE_RAC数据库的备份与恢复 全面学习MySQL+Proxy特性 全面学习分区表及分区索引...

    如何学python(李三思)

    如何学python(李三思)

    涂抹Oracle—三思笔记之一步一步学Oracle

    《涂抹Oracle—三思笔记之一步一步学Oracle》很好的学习oracle书籍,值得一看

    三思笔记之oracle函数

    通过阅读“三思笔记”中的相关内容,DBA们可以系统地学习Oracle函数的用法,从而更好地应对日常的数据库挑战。无论是处理数据转换、分析大量数据还是解决特定问题,这些函数都能提供强大的工具支持。因此,深入理解...

    涂抹Oracle 三思笔记之一步一步学Oracle(第2部分)

    涂抹Oracle 三思笔记之一步一步学Oracle(第2部分)

    exe安装包制作软件|三思安装包制作工具 v2.0.zip

    exe文件封装软件是开发者常用的一款站长工具,推荐使用三思安装包制作工具 三思安装包制作工具是一款程序压制工具,可以将任何程序封装为EXE,有了它你就可以把自己的一些比较零散的安装程度打个包,这样不仅便于...

    一步一步学Rman 三思笔记

    在“一步一步学RMAN 三思笔记”这个资料中,你将深入了解到如何有效利用RMAN来保护你的Oracle数据库,确保数据的安全性和可用性。 一、RMAN的基础概念 1. RMAN备份类型:包括全备份、增量备份和差异备份。全备份会...

    涂抹Oracle 三思笔记之一步一步学Oracle

    本书作为一本创作之初就定位于技术应用的实践参考书,虽然前前后后串联了Oracle数据库中十余个常用特性或工具,但在章节的设计上完全遵循这一理念。在涉及特性或工具应用的每一个章节,均有相关实例演示如何应用,...

    【三思笔记】Oracle学习资料整合汇总

    三思笔记,itpub版主(著有涂抹oracle)整理的oracle学习笔记,图文并茂。 个人在itpub中将:Linux5版本安装Oracle11gR2、全面学习分区表及分区索引、一步一步学rman、全面学习oracle的flashback特性、手把手教你用...

    深度学习:以学生为中心的“三思”课堂——以《登泰山记》为例展开“三思”课堂的实践.pdf

    在《登泰山记》这一课例中,深度学习体现在“三思”课堂的实践中,即“勤思”、“善思”和“多思”,旨在促进学生主动探索、批判性思考和创新。 【“三思”课堂实践】是指通过设计不同的教学环节,引导学生对文本...

    涂抹Oracle--三思笔记之一步一步学Oracle

    资源名称:涂抹Oracle--三思笔记之一步一步学Oracle内容简介:本书作为一本创作之初就定位于技术应用的实践参考书,虽然前前后后串联了Oracle数据库中十余个常用特性或工具,但在章节的设计上完全遵循这一理念。...

    涂抹MySQL 跟着三思一步一步学MySQL

    《涂抹MySQL:跟着三思一步一步学MySQL》是一本旨在帮助初学者和中级用户深入理解MySQL数据库系统的教程。这本书通过清晰的解释和实例,逐步引导读者掌握MySQL的核心概念和技术。MySQL是一种广泛使用的开源关系型...

    涂抹Oracle—三思笔记之一步一步学Oracle.zip

    2. **SQL语言**:包括DDL(Data Definition Language)用于创建和修改数据库对象,DML(Data Manipulation Language)用于插入、更新和删除数据,以及DCL(Data Control Language)用于权限管理和事务控制。...

    涂抹Oracle--三思笔记之一步一步学Oracle 完整版

    涂抹Oracle--三思笔记之一步一步学Oracle 完整版 本资源是一本关于Oracle数据库管理系统的电子书,共16章,涵盖了Oracle的基础知识、数据加载、数据保护、数据传输、基础补充等方面的内容。 知识点: 1. Oracle ...

    三思笔记--rman chm版本

    第一篇 进入RMAN 第二篇 RMAN命令知多少 第三篇 RMAN备份演练初级篇 第四篇 RMAN备份演练进阶篇 第五篇 RMAN基础知识补充 一 第六篇 实战RMAN备份 第七篇 RMAN基础知识补充 二 第八篇 演练RMAN恢复 ...

Global site tag (gtag.js) - Google Analytics