设计模式初见
panda2022-10-31 21:49:41编程基础设计模式
什么是设计模式?为什么需要设计模式?
为了解决软件设计中普遍存在的问题,前辈们总结了一些解决方案.而我们熟知的设计模式是前辈们通过经验总结下来的标准或者思路,它经受住了时间的考验;设计模式
一词是由埃里希·伽马
由建筑设计领域引进计算机世界;
那么设计模式体现在哪些地方呢?通常一个软件的组成由小到大:编程语言(现在大部分语言都是面向对象的设计模式)+功能模块(多种设计模式+算法)+框架(很多种设计模式)+架构(服务器集群等)
使用设计模式能适应多变的需求,增强程序的拓展性,以更清晰的思路实现功能,以及很大程度的提高应用的可维护程度(可读性,规范化).如果你想成为一名合格的软件开发人员,那么设计模式是你必须接触的东西.
设计原则(SOLID)
我们先来看看unix的设计哲学吧,他和设计模式的一些设计原则有很多相似的部分
- 小而美 保持程序的简洁,保证最简洁的api
- 每个程序只做一件事 每个函数就可以成为一个程序,这也是我们经常说的每个函数只做一件事
- 快速搭建原型 先做出来,再维护,再优化
- 可移植性大于性能 当可移植性和性能发生冲突时,优先取可移植性
- 可读性最重要 优先保证程序的可读性
- 提高复用性 这个可以说是程序员的共识了,解耦复用
是不是总有种似曾相识的感觉?哈哈哈哈,是了,和我们平时开发所提倡的一些东西有很大交集.正式开始我们的五大设计原则吧
S 单一职责
一个程序只做好一件事;对于功能复杂的函数,可以进行拆分,每个部分保证独立;
O 开放封闭
对拓展开放,对修改封闭;增加需求时,拓展新代码,而非修改已有代码
L 李氏置换
子类能够覆盖父类;父类能出现的地方,子类就可以出现;
I 接口独立
保持接口单一独立,避免出现复合接口,和单一职责有点相似,但是专注于接口
D 依赖导致
面向接口(抽象)编程,依赖于抽象而不依赖于具体;使用方只关注接口而不用去关注具体实现
23种设计模式
设计模式大体可分为以下几大类
创建型
- 工厂方法模式
- 抽象工厂模式
- 建造者模式
- 单例模式
- 原型模式
结构型
- 适配器模式
- 装饰器模式
- 代理模式
- 外观模式
- 桥接模式
- 组合模式
- 享元模式
行为型
- 策略模式
- 迭代器模式
- 模板方法模式
- 职责连模式
- 观察者模式
- 命令模式
- 备忘录模式
- 中介者模式
- 状态模式
- 解释器模式
- 访问者模式