设计模式是软件设计中常见问题的典型解决方案,由前辈们精简优化而来的优秀思想,是程序员的基本功之一。
23个常见的设计模式可以分为三种:
- 创建模式:提供创建对象的机制,增加已有代码的灵活性与可复用性。
- 结构模式:如何将对象和类组装成较大的结构,并同时保持结构的灵活和高效。
- 行为模式:负责对象间的高效沟通和职责委派。
分类详情:
创建型模式(5):
工厂方法:父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。
抽象工厂:无需指定具体类创建相关对象。
生成器:可分步骤创建复杂对象。该模式可以用想用相同的代码创建生成不同类型和形式的对象。
原型:可使代码不依赖所属而复制现有对象,
单例:保证一个类只有一个实例,并提供一个访问该实例的全局节点。
结构型模式(7):
适配器:使接口不兼容的对象能够相互合作。
桥接:可将一个大类或紧密相关的类们拆分为抽象和实现两个独立的层次结构,从而在开始时分别使用。
组合:将对象组合成树状结构,并且能像使用独立对象一样使用。
装饰器:可通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。
外观: 能为程序库、 框架或其他复杂类提供一个简单的接口。
亨元: 通过共享多个对象所共有的相同状态, 使能在有限的内存容量中载入更多对象。
代理:提供对象的替代品或其占位符。
行为型(11):
责任链:沿处理者链进行发送,依次处理。
命令:可将请求转换为一个包含与请求相关的所有信息的独立对象,能根据不同的请求将方法参数化、 延迟请求执行或将其放入队列中, 且能实现可撤销操作。
解释器:针对特定问题设计的特定解决方案。
迭代器:能在不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素。
中介:不与其直接接触,加一个中介。
备忘录:在不暴露对象实现细节的情况下保存和恢复对象之前的状态。
观察者:定义一种订阅机制, 可在对象事件发生时通知多个 “观察” 该对象的其他对象。
状态:能在一个对象的内部状态变化时改变其行为。
策略:定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。
模板:在超类中定义一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤。
访问者:将算法与其所作用的对象隔离开来。