大话23种设计模式

本篇文章为一个系列,主要深入浅出的谈谈设计模式设计,以方便我们在开发时候真正使用,而非为了面试才去学习。

1.设计模式是什么?

答:设计模式是一套被反复套用并被大部分人认可的代码设计经验的一个总结。引入设计模式可以增强代码性,保证代码的可靠性。

2.设计模式遵循的六大原则是什么,分别是什么意思?

答:六大原则是单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则,这些原则其实不仅仅是设计模式要遵循的,我们写code也应该遵循的。

单一职责原则:一个类应该有且只有一个变化的原因

开闭原则:对修改关闭对扩展开放

里氏替换原则:引用基类的地方必须能透明地使用其子类的对象

依赖倒置原则:针对接口编程而非实现细节

接口隔离原则:客户端不应该依赖它不需要的接口而应该建立在最小接口上

迪米特法则:一个对象应当对其他对象有尽可能少的了解

3.23种设计模式分类有哪些,每个分类都有哪些设计模式?

答:设计模式分为创建型模式、结构型模式、行为型模式三种,所谓创建型模式就是表示代替new方法动态创建对象的一个思想,结构型模式就是涉及到如何组合类和对象以获得更大的结构的,行为型模式对在不同的对象之间划分责任和算法的抽象化。

创建型模式五种,分别是工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式(*)。

工厂模式:工厂方法代替new操作的一种模式

抽象工厂方法:为创建一组相关或相互依赖的对象提供一个接口而无需指定它们的具体类

单例模式:指系统运行时只存在一个这个类型的对象

建造者模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

原型模式:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象

结构型模式有七种,分别是适配器模式、装饰器模式、代理模式(*)、外观模式、桥接模式、组合模式、享元模式。

适配器模式:让那些接口不兼容的类可以一起工作

装饰器模式:对已经存在的某些类进行装饰,以此来扩展一些功能

代理模式:某一个对象提供一个代理对象,并由代理对象控制对原对象的引用,分为动态代理与静态代理

外观模式(Facade):向客户端提供了一个客户端可以访问系统的接口

桥接模式:抽象部分与它的实现部分分离,使它们都可以独立地变化

组合模式:将对象组合成树形结构以表示部分-整体的层次结构,使得用户对单个对象和组合对象使用具有一致性

享元模式:运用共享技术有效地支持大量细粒度的对象

行为型模式有11种,分别是策略模式(*)、模板方法模式、观察者模式(*)、迭代子模式、责任链模式(*)、命令模式(*)、备忘录模式、状态模式(*)、访问者模式、中介者模式(*)、解释器模式。

策略模式:一个类的行为或其算法可以在运行时更改

模板方法模式:定义一个操作中算法的框架,而将一些步骤延迟到子类中

观察者模式:一个对象被修改时,则会自动通知它的所有依赖对象

迭代子模式:可以顺序地访问一个聚集中的元素而不必暴漏聚集的内部表象

责任链模式:很多对象由每一个对象对其下家的引用而连接起来形成一条链

命令模式:请求以命令的形式包裹在对象中,并传给调用对象

备忘录模式:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态

状态模式:当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类

访问者模式:数据操作与数据结构分离的设计模式

中介者模式:用一个中介对象来封装一系列的对象交互

解释器模式:把事物高频率的特征和符号都通过解释器来解释,并加以组合处理

其中带(*)表示经常会用到的,有什么问题请随时留言,谢谢!!

你可能感兴趣的:(大话23种设计模式)