设计模式是什么?
通俗的讲,设计模式就是前人总结出来的编码的经验,一种特定的问题的成熟的解决方法,说白了就是一种特定的问题,怎么样写代码,更加的适合
设计模式就是这样一个被前人总结出来的经验,遇到特定的问题,可以用特定的编码方法去解决
当然也不是所有的问题,都可以往设计模式上套
设计模式通常是以 面向对象 编程为基础,我们知道,面向对象编程有3大特点:封装
,继承
,多态
面向对象设计模式通常以类或对象来描述其中的关系和相互作用
设计模式既然是前人总结出来的经验,而且是特定的问题下的解决方案,那么肯定有一些原则在里面,下面我们来讲一下设计模式的六大原则
设计模式的六大原则
一 单一职责原则
看过《国富论》的人都知道
生产力上的大改进,都是分工的结果。 越大的制造业,分工就越细。 明确的分工将极大的提高生产力,亚达斯密使用制针业举例,一个工人,再怎么努力,一天也造不出20根针。但是只要雇佣10个工人,每个人分工参与其中的一道或者几道工序,平均一个人一天就能制造4800枚针。
单一原则
就是和分工有异曲同工之处,下面我们通俗的定义单一原则
单一原则:我们在写代码的时候,定义一个类,或者一个接口,尽可能少的让这个类只做一件事
说起来容易,做起来可能就没有那么容易,这个过程需要我们自己多写,多看,多思考,自己去体会,随着经验的增长,我们终会掌握这个设计模式
二 开闭原则
先来看一下开闭原则的定义
开闭原则 : 对扩展开放,对修改关闭
什么意思?有些人可能一看到这个定义有点蒙,没关系,解释一下
就是说软件在添加一个新的功能的时候,我们提倡不修改原来的代码,而直接增加新的代码(比如我们新增加一个文件或者一个类)来达到增加新的功能
这就是 对扩展开放,对修改关闭 不修改原来的代码:就是对修改关闭,为啥要这样啊?因为修改原来的代码,容易出问题啊(比如手写错误写了个死循环),原来的代码运行的好好的,我们尽量不修改它。
添加新的代码增加新功能:就是对扩展开放 :不修改老代码,只增加一个新的文件或者一个类就解决了问题,就算出错了也好查,因为没有修改原来的代码嘛,这就是对扩展开放,一般是面向对象的多态来设计的,后面我们会有代码示例
三 里氏替换原则
构建扩展性更好的系统:由于是一位姓里的女士提出来的所以就叫做里氏替换原则, 说白了就是所有引用基类的地方也可以换成子类. 还是利用了面向对象的多态
四 依赖倒置原则
让项目拥有变化的能力:有三个特点
- 高层模块不应该依赖低层模块,两者都应该依赖其抽象;
- 抽象不应该依赖细节;
- 细节应该依赖抽象。
五 接口隔离原则
让系统有更高的灵活性:让客户端不应该依赖于它不需要的接口,就是让客户端依赖的接口尽可能的小
六 迪米特原则
让系统有更好的扩展性:一个对象应该对其它对象有最少的了解.通俗的讲,一个类应该对自己需要耦合或者调用的类知道的最少
类的内部如何实现与调用者或者依赖者没有关系.
设计模式的分类
设计模式有 3 种大类,分别是
创建型模式 这种模式就是用来创建对象用的,有人会问了,创建对象还分不同的模式吗? 是的,因为不同的时候可能需要不同的创建对象的方法或者时机,后面我们讲创建型设计模式的时候会讲到
结构型模式 结构型模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。
行为型模式 行为模式负责对象间的高效沟通和职责委派。