设计模式实战精讲:前传
这对于之前的我看来,设计模式的存在可有可无,也可以这么说,是我对设计模式的认识太少。俗话说的好:前人种树后人乘凉,在计算机这条道路上,无数前辈总结出来的经验还是有用的,为什么我会有如此想法呢?而这其中多多少少与设计模式有着千丝万缕的联系,在我不断的优化代码的过程中,我也意识到了设计模式的重要性,于是便有了这篇文章

前言
什么是设计模式?为什么要学习设计模式?这对于之前的我看来,设计模式的存在可有可无,也可以这么说,是我对设计模式的认识太少。现在的我看来,设计模式是一套反复被人使用,经过实战推敲的代码设计经验的总结。俗话说的好:前人种树后人乘凉,在计算机这条道路上,无数前辈总结出来的经验还是有用的,为什么我会有如此想法呢?原因是在我自己写的项目中,代码自认为总是不够优雅,不够言简意赅,不够直抒胸臆。而这其中多多少少与设计模式有着千丝万缕的联系,在我不断的优化代码的过程中,我也意识到了设计模式的重要性,于是便有了这篇文章。
设计模式的分类
设计模式细分为三大部分,这三大部分叫创建型模式,结构型模式和行为型模式。下面我将大概讲解这三大部分细分的设计模式:
1.创建型模式

图1.创建型模式区分示意
2.结构性模式

图2.结构型模式区分示意
3.行为型模式
图3.行为型模式区分示意
面向对象的设计原则
1.依赖倒置原则(DIP):
1.高层(稳定)不依赖低层(变化),两者依赖抽象(稳定):高层设计(业务逻辑)应该具有稳定性,不因底层实现的变化而变化
2.抽象(稳定)不依赖细节(变化),细节依赖抽象(稳定):细节实现应该基于稳定的抽象层(模型或框架)进行,而不是抽象层去适应不断变化的细节
2.开放封闭原则(OCP):
1.对扩展开放,对更改封闭:对于新功能应增添新代码实现,对于之前测试过的代码不应该因为需求的变化而更改
2.类模块可扩展, 但不可修改
3.单一职责原则(SRP):
1.一个类应该仅有一个引起它变化的原因
2.变化的方向应隐含类的责任
4.里氏替换原则(LSP):
1.子类必须能够替换它们的基类
2.继承表达类型抽象:使用继承的方式对抽象类型进行实现,对代码进行复用和扩展
5.接口隔离原则(ISP):
1.不应该强迫客户程序依赖他们不用的方法
2.接口应该小而完备
3.一个接口应该只提供一种对外功能
6.优先组合不是继承原则(CARP):
1.类的继承通常是"白箱复用",对象组合通常是"黑箱复用"
1.白箱复用:一般是指类的继承关系,因为子类可访问父类的受保护以及公有成员,故耦合度高,也称为白箱复用
2.黑箱复用:一般是指类的组合关系,类之间互不打扰,故耦合度底,也称之为黑箱复用
2.继承在一定程序破坏封装性,子类和父类耦合度高
7.迪米特法则(LOD):
1.对象应当对其他对象尽可能少的了解
2.各个模块之间相互调用时,通常会提供一个统一的接口来实现
PS:针对以上设计法则,大概了解即可,难以了解的法则作者已经通过解释来进行通俗的讲解