浅谈面向对象的分析和设计

最早在学习面向对象的分析与设计时,也研究了很多的教材,有讲OO 基本概念 的,比如什么是类,面向对象的基本特点等;也有讲面向对象的设计原则 的,比如单一职责,开放封闭,接口隔离等;当然不可能不去学习设计模式 啦。但最终理论学了一大堆,在实践时,还是觉得不知从何下手,有点雾里看花的感觉。

(这里讲到了学习OO 的最好路线,先学概念,再学设计原则,最后才是设计模式)

后来我突然意识到,做系统设计虽然可以理解为艺术,但根本上它不过是个技术活,没那么玄乎的。而技术活是一定要去实践的,不能被概念吓到,相信熟能生巧。

我写这篇文章就是希望帮那些刚开始学习OO 的人早点下手,少走弯路,大牛请华丽地飘过。

首先讲讲分析和设计的区别,简单的讲,分析是针对问题域的,设计是针对解域的,也就是说分析是为了更好地理解需求和待解决的问题,而设计才是解决方案。这个不是重点,Pass.

那怎样面向对象设计呢?

其实,下手很简单,掌握以下两个中心就好了,面向对象的设计不过是:

  1. 识别类
  2. 分配职责

还是很抽象?别急,听我慢慢解释,

怎样识别类呢,类有三种,实体类,边界类和控制类。

实体类是指需要长时间保留下来的信息,通常会做持久化处理,一般来讲,用例中的名词都可以被识别为实体类(或者实体类属性)。

边界类负责处理Actor/System 之间的交互,通常是输入/输出等。

控制类负责处理一些复杂的运算和算法等,一些较为复杂的处理都可以识别为控制类,同时,控制类还需要协调(控制)其他的类一起工作。

分配职责又是怎么回事呢?

所谓的职责,就是系统需要完成的事情。具体来讲,用例中系统要处理的步骤就是系统的职责,比如常见的CRUD 操作。这些操作都要适当的分配给上面找出来的类。

以上讲的可能还是很抽象,怎么办呢。很简单,我是莽汉我怕谁,不知道就硬上了,哈哈。管它三七二十一,胡乱识别一堆类,写一堆的方法实现了用例再说。

你可能会说,这样不好吧。可不好的标准是什么呢,就是不符合前面说到的设计原则 。不好怎么办呢,按照设计原则 或者是使用适当的设计模式重构 啊。

对于设计来说,没有最好,只有更好。还有,只要你敢干,啥事儿也不难。

 

最后,谈谈我对面向对象的理解。

对于任何的新概念或是方法论,我们首先要把握住其根本的价值所在,其次是了解实现这个价值而需要遵循的原则和策略,最后才是手段。

面向对象的分析和设计也是一样,

  • 根本的价值在于提高软件的复用性,可维护性和可扩展性,更好的适应业务的变化。
  • 为了实现这个目标,设计时就必须遵循相关的设计原则,比如单一职责,开放封闭,接口隔离,里氏替换,依赖倒置... ...
  • 最后才是设计模式,这些模式都是符合设计原则的最佳实践了。

所以才会推荐上面提到的学习顺序,先原则,后模式,否则可能就是本末倒置,甚至落入为了模式而模式的怪圈,效果可能就不好了。

 

PS:推荐两本书给大家

《UML 和模式应用》

《系统分析与设计方法》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值