设计模式概述
设计模式是什么?
- 它是软件开发人员在软件开发过程中经过相当长的一段时间的试验和错误总结出来的面临的一般问题的解决方案;
- 它是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结;
- 它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。
设计模式能干什么?
- 实现代码的可重用性
- 增加代码的可维护性
- 减低代码的被理解难度
- 保证代码的可靠性
- 增加系统的健壮性
- 易修改可扩展
设计模式七大设计原则
1. 开闭原则
对扩展开放,对修改关闭。当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。它使软件实体拥有一定的适应性和灵活性的同时具备稳定性和延续性。
2. 单一职责原则
单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。
也就是说,单一职责原则就是自己只负责自己的事,不需要理会别人的事。在面对对象编程中,每个对象只负责自己的任务,这样的开发方式代码耦合度较低,较灵活,易扩展。
3. 里氏替换原则
里氏替换原则是面向对象设计的基本原则之一。里氏替换原则规定继承必须确保超类所拥有的性质在子类中仍然成立。里氏替换原是继承复用的基础,它反映了基类与子类之间的关系,是对实现抽象化的具体步骤的规范,是实现开闭原则的方式之一。
4. 依赖倒转原则
依赖倒转原则规定针对接口编程,依赖于抽象而不依赖于具体,要面向接口编程,不要面向实现编程。
依赖倒转原则是实现开闭原则的重要途径之一,它降低了用户与实现模块之间的耦合度。
5. 接口隔离原则
接口隔离原则要求开发者尽量将庞大的接口拆分成更小的更具体的接口,一个类对另一个类的依赖应该建立在最小的接口上。要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。
6. 合成复用原则
在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。如果要使用继承关系,则必须严格遵循里氏替换原则(继承必须确保超类所拥有的性质在子类中仍然成立)。
7. 迪米特原则
迪米特法则又叫作最少知识原则,一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。
一句话总结设计原则就是要降低对象的耦合度,增加程序的可复用、扩展和维护性。
23种设计模式
根据模式是用来完成什么工作来划分,可分为创建型模式、结构型模式和行为型模式 3 种类型。
其中工厂方法模式、适配器模式、模板方法模式、解释器模式四种模式,是用于处理类与子类之间的关系,这些关系通过继承来建立,是静态的,在编译时刻便确定下来了。其他的模式都是用于处理对象之间的关系,这些关系可以通过组合或聚合来实现,在运行时刻是可以变化的。