## 连载:面向对象葵花宝典:思想、技巧与实践(25) - 类模型
面向对象设计和弹吉他差不多,有很多成熟的理论和技巧,学会弹吉他并不难,你只需要应用这些理论和技巧即可!
**【师傅领进门,修行在个人】**
“类模型”是整个面向对象设计模型的核心,是面向对象设计阶段的主要输出,也是设计师们最能够发挥自己才能的地方。
虽然“类模型”如此重要,但面向对象设计技术经过几十年的发展后,目前已经形成了很成熟的一套体系,因此真正在进行“类模型”设计的时候,其实难度并不高,这也是多亏了众多前辈们的无私贡献,才能使得我们这些芸芸众生也能轻松掌握这些原本带有艺术色彩的技能。
不过话又说回来了,入门容易精通难,“类模型”的设计也是如此,虽然有前辈们各种各样的思想结晶指导着我们,但毕竟如何理解、如何应用这些思想结晶,还是要看个人的领悟力和把握力。就像同样的《葵花宝典》,岳不群看了创立了气宗,蔡子峰看了创立了剑宗,渡元禅师听了后悟出了辟邪剑法,东方不败看了竟然练出了绣花针绝技!所以接下来的内容,也只是“师父领进门,修行在个人”,如果希望做出优秀的设计,更多还是依靠个人的领悟和实践!
**【设计的魔法崇拜】**
面向对象类的设计很多时候都蒙上了一层神秘的面纱。一个常见的场景是:“设计师”拿到需求后,经过一段时间的设计,感觉就像变戏法一样,然后就拿出了一个类模型。普通的开发人员看到这样的类模型,很难想象如何从需求才能够得到了这些类,由于大部分公司的设计人员确实也都是公司里面的牛人,因此大家就自然而然地认为这是水平和创造力的表现,心底不由得产生由衷的赞叹:“牛逼啊!”
我称这种现象为设计的“魔法崇拜”,具体表现就是认为设计是一种魔法,做设计的人是魔法师,只有牛逼的人才能够做设计。
但这种认识并不准确,就像我们前面提到的,面向对象领域已经发展了几十年,各种思想、理论都已经基本成熟,绝大部分人在做设计的时候,都不可能有什么天才的创新或者天才的灵感,而只是这些已经成熟的思想和理论的应用而已。
之所以现在还会出现这种现象,主要原因还是在于各种思想、理论、方法都是针对具体问题的分析或者总结,但并没有谁明确的将这些东东形成一套完整的面向对象设计体系。
可能很多人都有这种感觉:面向对象我也懂,设计模式我也知道,设计原则我也明白,但真的要进行设计的时候,就不知道如何下手了,比如说:
对象从哪里来?
什么时候用设计模式?
如何判断设计是否正确?
什么样的设计才是优秀的设计?
。。。。。。。。。。。
正因为存在这样的原因,我们自然会对那些能够设计出完整的类模型的设计师们刮目相看了。
其实面向对象设计并不是什么高深的技术,也不需要天才的创新,更不需要变魔法,而是有章可循的,只要我们按照一定的步骤,一步一个脚印,不断精益求精,就能够完成面向对象的设计。
但正如前面提到的一样,面向对象设计更多的时候是一门艺术。虽然我们按照一定的步骤能够完成面向对象的设计,但在这些步骤实施的过程中,如何应用相关技术,如何做出设计选择等,更多时候是带有艺术色彩的。就像很多人都会弹吉他,但真正的吉他大师弹出来的感觉,肯定和一个普通人弹的不一样。
接下来我们将会分几个小节讲述如何进行面向对象的类设计:
第一步(照猫画虎):领域类映射 --- 告诉你类从哪里来
第二步(精雕细琢):应用设计原则和设计模式 ---告诉你如何设计“好”类
第三步(照本宣科):拆分辅助类 ---告诉你如何和你的开发框架结合起来
- 前言
- (1) - 程序设计思想的发展
- (2) - 面向对象语言发展历史
- (3) - 面向过程 vs 面向对象
- (4) - 面向对象是瑞士军刀还是一把锤子?
- (5) - 面向对象迷思:面向对象导致性能下降?
- (6) - 不要说你懂“类”
- (7) - “对象”新解
- (8) - “接口” 详解
- (9) - “抽象类” 详解
- (10) - “抽象” 详解
- (11) - “封装” 详解
- (12) - “继承” 详解
- (13) - “多态” 详解
- (14) - 面向对象开发技术流程
- (15) - 需求详解
- (16) - 需求分析终极目的
- (17) - 需求分析518方法
- (18) - 用例分析
- (19) - 功能点提取
- (20) - 用例图的陷阱
- (21) - SSD
- (22) - 领域模型
- (23) - 领域建模三字经
- (24) - 设计模型
- (25) - 类模型
- (26) - 类模型三板斧
- (27) - 动态模型设计
- (28) - 设计原则:内聚&耦合
- (29) - 高内聚低耦合
- (30) - SRP原则
- (31) - OCP原则
- (32) - LSP原则
- (33) - ISP原则
- (34) - DIP原则
- (35) - NOP原则
- (36) - 设计原则如何用?
- (37) - 设计模式:瑞士军刀 or 锤子?
- (38) - 设计模式之道
- (39) - 设计原则 vs 设计模式
- (40) - DECORATOR模式
- (完)- 书籍已经出版