面向对象博大精深,能力超群,可以解决头痛的软件设计问题。看着大师们酷酷的UML图、美妙的理论,感觉那就是我的方向!
每件是都需要过程,说要成为专家,至少需要10年艰苦的努力。面向对象设计也是一样的,需要在实践中慢慢摸索,慢慢体会。
不要以为大师们的UML图是一下子画出来的,也是经过无数次修改而得来的。不要以为把大师们的UML图搬过来就可以用,也许它不能解决你的问题。
要做好的软件设计必须要对业务精通。第一,是软件本身,潘爱民老师说:” 没有足够的代码量,很多程序设计的概念是很难体会到的”。第二,是实际的业务,如果没有明确了解业务,那设计也是不存在的,即使做出来了,也是空洞的。
大师还是很少的,那,不是大师怎么办呢?像潘老师说得那样,从日常的编码过程中,慢慢提高。理论要联系实际,当你在实践中真正看到它的效果的时候,它才是属于你的。
看一下,本站短信模块代的码重构过程,希望能通过这个例子说明我的意图。
短信模块的目的:为本站会员提供,在站内及时交流的工具,短信模块有以下功能,
-发送短信
-读短信
-删除
-查看短信邮箱
没有重构前的代码结构如下,
查看代码
这段代码,功能上是没有问题的,但类中方法比较多,看起来不方便,最苦恼的是,每当要添加新邮箱时,需要在每个CASE里加一条语句,来判断新邮箱该怎样处理。这应该就是大师所提及的code smell吧。
重构的思路是这样的,
-定义一个邮箱父类,然后让新邮箱类、已读邮箱类、已发邮箱类、系统邮箱类继承邮箱父类。
-定义一个函数负责生成具体的邮箱类,这样,在添加新邮箱时,只要继承父类,在生成函数中,加入if语句就可以了。
-定义一个邮局类,负责发送短信和生成用户所需要的邮箱。原来的类中含有多种功能,思路不明确。
查看代码
重构之后的代码,思路明确,维护和扩展都很方便了。
在这个例子里我学到了,明确了,
-Factory Method工厂模式
-Open-Closed Principle 开-关闭 原则
-Single Responsibility Principle 单一职责原则
面向对象的世界里,像原则、设计模等理论的东西很多,这些原则和设计模式是起指导作用的,而不是让我们把它硬生生地放到设计里。其实在上面的例子里,如果只有两个邮箱,那,不重构也是可以的,因为没有必要。
上面的例子更像是敏捷所提倡的方法,先编码,后重构。要是没有敏捷方法的出现,谁会赞同上面的方法是正确的呢?所以,做自己的面向对象,让别人说去吧。
|
相关推荐
面向对象的编程(OOP)是面向对象软件开发过程中的第三个阶段,是指将 OOD 的系统设计模型用面向对象的程序设计语言予以具体实现,具体而言,OOP 是实现在面向对象设计模型中的各个对象所规定的任务。面向对象的编程...
下面将详细阐述面向对象设计的基本概念、原则以及在两个文档——"面向对象分析与设计"和"面向对象的思考过程"中可能涵盖的关键知识点。 1. **面向对象的基本概念**: - **对象**:对象是类的实例,具有属性(数据...
面向对象设计的重点在于描述对象在整个问题解决过程中的行为,而非具体的步骤。如同五子棋游戏,面向过程会按步骤设计,而面向对象则会创建“玩家”、“棋盘”和“规则”等类,让它们各自负责相应的功能。 面向对象...
### 面向对象的软件开发过程 #### 5.1 软件开发过程 **软件开发过程**指的是为了创建或更新软件产品而执行的一系列有序活动。这些活动包括但不限于软件描述、软件开发、软件有效性验证以及软件演进。不同软件开发...
这个压缩包文件《面向对象的思考过程(英文版)》很可能提供了一个深入探讨面向对象设计原则、概念和技术的详细指南。 1. **对象与类**:对象是OOP中的核心单元,它包含属性(也称为成员变量或字段)和方法(成员函数...
面向对象设计(Object-Oriented Design,OOD)是一种软件开发方法,它基于“对象”的概念,将现实世界的问题域转化为计算机程序。UML(Unified Modeling Language)是面向对象设计的一种标准化建模语言,用于可视化...
面向对象设计是在分析的基础上进行的,它关注于如何将需求转化为软件系统的内部结构。设计阶段的输出通常包括更详细的类图、活动图、序列图、状态图和组件图等UML模型。设计过程还会确定系统组件的接口和协作方式。 ...
面向对象设计模式是软件开发中的一种重要思想,它通过总结和提炼在软件设计过程中常见的问题和解决方案,形成了可复用的设计规范。标题提到的“23种面向对象设计模式”涵盖了设计模式的主要分类,这些模式在Java、...
面向过程的设计思路适合小型项目和简单的系统,而面向对象的设计思路适合大型项目和复杂的系统。 面向对象的设计思路还具有很高的可扩展性和可移植性,例如要把五子棋游戏改为围棋游戏,只需要改动规则对象就可以了...
面向对象编程(Object-Oriented Programming, OOP)和面向过程编程(Procedural Programming)是两种不同的编程范式,它们在解决问题的方式上有着本质的区别。 面向过程编程是一种自底向上的编程思想,它关注的是...
面向过程、面向对象、面向组件、面向服务软件架构的分析与比较 软件开发历程与架构演进 软件开发从汇编语言、过程式语言、面向对象、面向组件发展到面向服务,这一进程不仅反映了编程技术的不断进步,更是软件工程...
详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程、UML和多层技术。本书使用最常见的技术和方法,通过一个贯穿全书的案例分析,对面向对象的软件开发过程和使用面向对象技术的编程过程进行了...
面向对象设计之3_基于UML的图书管理系统的分析...本资源摘要信息主要介绍了面向对象设计和UML在图书管理系统中的应用,强调了面向对象设计的基本思想和UML的主要容,描述了基于UML的图书管理系统模型的设计和分析过程。
本文将深入探讨面向对象的设计过程,结合IBM提供的实例,揭示其简洁而实用的设计方法。 1. **问题识别与需求分析** 在设计开始前,我们需要明确项目的目标,理解用户的需求。这包括收集业务规则、系统边界、交互...
### 面向对象与面向过程编程:对比与分析 #### 一、引言 在计算机科学领域,程序设计范式是定义如何构建和组织软件系统的基础。两种主要的编程范式包括面向对象编程(Object-Oriented Programming,简称OOP)与...
4. 继承:继承是面向对象设计中的一个核心机制,它允许创建一个新类来继承现有类的属性和方法。这使得软件设计可以复用和扩展。 5. UML(统一建模语言):UML是一种标准的图形化建模语言,用于软件系统的设计和文档...
而面向对象设计方法是一种更为现代的编程范式,以数据为核心,通过将数据和处理数据的过程捆绑成对象,模拟现实世界实体的特性。 面向对象设计方法的三个基本特点:封装性、继承性和多态性是面向对象编程的核心概念...
《UML面向对象设计与分析》是清华大学出版社出版的一本专著,由牛丽平编著,主要探讨了面向对象设计的重要工具——统一建模语言(UML)。这本书深入浅出地介绍了UML的各种图表及其在软件开发过程中的应用,为读者...