背景:
每天项目Spring家族应用、CRUD,如何在完成业务场景中,真正按照OOP思想(封装,继承,多态),增加代码的质量,可读性、易维护性、重用性、灵活性和扩展性。
解决方案:
详读Spring源码,软件设计模式。以下为记录设计模式的一些感悟。
3W·H解读设计模式
-
What是什么?
模式:源于建筑领域,人们为了解决某类重复出现问题,而总结归纳出来的有效解决方案。
GoF将模式的概念引入软件工程领域,软件模式也因此诞生。软件模式并非仅限于设计模式,还包括架构模式、分析模式和过程模式等,实际上,在软件开发生命周期的每一个阶段都存在着一些被认同的模式。
设计模式为:代码设计经验的总结。 -
Why为什么要用?
软件设计模式为了代码灵活性、可重用性、易读性、易维护性、易扩展性。 -
Where在哪里用?
面向对象编程,简单的根据设计模式的六大基本原则来判别,违反其中的原则即可考虑用,六大原则如下:1. 开闭原则(总原则)。一个实体,对扩展开放,对修改关闭。抽象化(接口)是开闭原则的关键,多态。 2. 单一职责原则。一个类而言,应该只有一个引起它变化的原因。是实现高内聚、低耦合基石。 3. 里氏替换原则。能使用基类的地方子类也可以使用。是实现开闭原则的重要方式之一。 4. 依赖倒置原则。针对接口编程,而不是针对实体编程。 5. 接口隔离原则。每个接口应承担一种相对独立的角色,只做该干的事。 6. 迪米特法则。一个软件实体应当尽可能少地与其他实体发生相互作用。
-
How怎么用?
Gof中设计模式有23种,都是对六大规则应用的一种体现,注意OOP分析,不要局限现实生活中实体的对象去抽象化定义一个class ,实体的某些属性也可抽象为一个class。
具体分类:
1)根据其目的(设计模式是用来做什么的)可分为创建型(Creational),结构型(Structural)和行为型(Behavioral)三种:
• 创建型模式主要关注创建对象。
• 结构型模式主要关注类或对象的组合,注意组合优先于继承。
• 行为型模式主要用于描述对类或对象怎样交互和怎样分配职责,关注对象之间的通信。
2)根据范围,即模式主要是用于处理类之间关系还是处理对象之间的关系,可分为类模式和对象模式两种:
• 类模式: 处理类和处理类的子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,是属于静态的。
• 对象模式:处理对象间的关系,这些关系在运行时刻变化,更具动态性。
23种模式,将从标识(定义),问题陈述(实际的问题)和解决方案(如何实现),效果(有啥优点)、其他模式的类比者几个维度去解析。
不积跬步无以至千里,每天前进一小步