分类 | 设计模式 | 描述 |
---|---|---|
创建型 | 单例模式 | 确保一个类只有一个对象。实现方式有:饿汉式、懒汉式、双重校验锁、静态内部类实现、枚举实现 |
简单工厂 | 简单工厂类创建对象 | |
工厂方法 | 由工厂子类决定创建什么类型的对象,不同的工厂子类创建不同的对象 | |
抽象工厂 | 创建产品家族,一个工厂子类可以创建多种对象 | |
建造者模式 | 将复杂对象的构建步骤和每个步骤的实现解耦,指挥者类关联建造者类并实现对象的构建步骤,建造者子类中实现每个步骤的具体逻辑,并提供一个返回复杂对象的方法 | |
原型模式 | 从一个已有对象创建它的拷贝 | |
行为型 | 责任链模式 | 请求在链中传递,直到有一个对象处理它为止 |
命令模式 | 调用者类持有命令类对象,命令类持有命令的执行者类对象 | |
解释器模式 | 给定一个语言,定义文法表示和解释器,使用解释器来解释语言中的句子。包含:上下文、抽象表达式类、表达式子类,表达式子类可以持有抽象表达式类对象 | |
迭代器模式 | 聚合类和迭代器类,聚合类有一个创建迭代器的方法,迭代器类关联聚合类 | |
中介者模式 | 实现通信对象的解耦,中介者持有所有通信对象 | |
备忘录模式 | 原始对象、备忘录和备忘录保存者三部分,原始对象可以创建备忘录和恢复状态 | |
观察者模式 | 主题通知订阅了自己的观察者状态发生变化,主题内部保存了订阅了自己的观察者 | |
状态模式 | 在一组状态下有一组行为,所有状态持有同一个上下文,不同的状态下行为不同,发生行为时上下文状态可能会发生变化 | |
策略模式 | 定义了算法家族,把它们封装起来,可以相互替换 | |
模板方法 | 模版方法中定义了算法的执行步骤,在子类中步骤可以有各自的实现 | |
访问者模式 | 访问者、数据结构和元素三部分,将元素和作用在元素上的操作解耦,在访问者类中实现作用在元素上的逻辑 | |
空对象模式 | 使用什么都不做的空对象来代替null | |
结构型 | 适配器模式 | 类适配器:适配器类继承适配者类,实现目标接口 对象适配器:适配器类持有适配者类对象,实现目标接口 |
桥接模式 | 将抽象和实现分离,抽象类依赖实现类 | |
组合模式 | 将对象组合成树状结构以表示整体-部分的层次结构,组件类是叶子类和组合类的父类,组合类持有一个组件类集合 | |
装饰者模式 | 装饰者套在被装饰者上,动态拓展被装饰者的功能。组成:组件接口、实现该接口的具体实现类(被装饰者)和抽象装饰者类、装饰者子类,抽象装饰者类持有组件接口 | |
外观模式 | 提供一个统一的接口来访问子系统的一群接口 | |
享元模式 | 利用共享的方式支持大量细粒度对象,对象中部分内部状态是相同的(作为HashMap的key),使用HashMap来缓存对象,减少创建对象的数量。提供一个享元接口,具体享元类包含内部状态,享元工厂中有一个HashMap,并提供外部方法获取对象 | |
代理模式 | 给某对象提供一个代理来控制对该对象的访问。目标类和代理类实现同一个接口,代理类持有一个目标类对象 |
25种设计模式的自我理解和简单总结
最新推荐文章于 2020-09-22 23:24:23 发布