阅读先导
你需要对 C#基础、面向对象(OO)有一定的基础,包括不限于:封装、继承、多态、重写、抽象类、接口等;
学习 设计模式 是不限开发语言的,本教程是用 C# 代码示例的,你也可以用 C++、java、python、php等具有面向对象的语言来进行学习本教程;
每一个开发人员都 必须要 掌握 面向对象 这一基础内容,而且需要在项目开发中灵活运用;
面向对象 不是很难理解,我觉得主要难的还是在不能很好的去实践它;
什么是设计模式(design pattern)?
在软件工程中,设计模式 是:对软件设计中普遍存在的各种问题,所提出的解决方案;(记住这句话)
这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域引入到计算机科学的;
就好比上图中的 大厦vs简易房,前者因为规模大,开发时必须有有效的设计规划、而后者因为规模太小、可以跳过设计直接建造(但也不建议)。如果前者不设计规划,那么这个搭建这个大厦后肯定会出现各种各样的问题;
软件开发也是一样的道理,所以,在开发项目时,是务必要有一定的的软件设计模式基础的;
设计模式有什么重要性?
拿实际工作经历来说,当一个项目开发完后,如果客户提出增新功能,怎么办?
如果项目开发完后,原来程序员离职,你接手维护该项目怎么办?(代码需要强维护性,即可读性、规范性,接手项目才能快速)
目前程序员门槛越来越高,一线IT公司(大厂),都会问你在实际项目中使用过什么设计模式,怎样使用的,解决了什么问题。
设计模式一般出现在项目中哪个阶段? 面向对象(OO)=>功能模块(设计模式+数据结构与算法)=>框架(这里也使用到设计模式)=> 架构(服务器集群);
如果想成为合格软件工程师,那就花时间来研究下设计模式是非常必要的;
设计模式原则
所有的(23种)设计模式都需要遵守的原则,称为:设计模式原则;
设计模式原则,其实就是程序员在编程时,应当遵守的原则,也是各种设计模式的基础(即:设计模式之所以这样设计,其实所依据的就是遵守这7大原则)
常用的七大设计模式原则有:
1. 单一职责原则
2. 接口隔离原则
3. 依赖倒转(倒置)原则
4. 里氏替换原则
5. 开闭原则
6. 迪米特法则
7. 合成复用原则
注意:这7大原则和及其概念,必须要背,且必须要理解里面的含义;
设计模式的目
设计模式,是为了让程序,具有更好的:
- 代码重用性(即:相同功能的代码,不用多次编写)
- 可读性(即:编程规范性,便于其他程序员的阅读和理解)
- 可扩展性(即:当需要增加新的功能时,非常的方便,称为可维扩)
- 可靠性(即:当我们增加新的功能后,对原来的功能没有影响)
- 使程序呈现 高内聚,低耦合 的特性(模块内强依赖,模块间依赖很低)
金句:
设计模式包含了面向对象的精髓,“懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要”
Scott Mayers 在其巨著《Effective C++》 就曾经说过: C++老手和 C++新手的区别就是前者手背上有很多伤疤
下一篇,我们开始讲解第一种设计模式原则:单一职责原则