![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 73
xutatu
这个作者很懒,什么都没留下…
展开
-
抽象工厂模式
其他工厂的工厂 定义:为创建一组相关或相互依赖的对象提供一个接口,而且无须指定它们的具体类.优点:1. 封装性,高层模块关心的是接口,抽象,它不关心对象是如何创建出来的.2. 产品类的约束为非公开状态.缺点:横向扩展容易,纵向扩展困难实现:1.抽象产品类public abstract class AbstractProductA { publi...原创 2018-05-09 11:08:36 · 98 阅读 · 0 评论 -
中介者模式
定义 用一个中介对象封闭一系列的对象交互,中介者使各对象不需要显示地相互作用,从而可以独立地改变它们之间的交互.角色 抽象中介者角色 抽象中介者角色定义统一的接口,用于各同事角色之间的通信 具体中介者角色 具体中介者角色通过协调各同事角色实现协作行为,因此它必须依赖于各个同事角色 同事角色 每一个同事角色者知道中介者角色,而且与...原创 2018-05-14 21:35:04 · 78 阅读 · 0 评论 -
工厂方法模式
定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类.优点:1. 良好的封装性,代码结构清晰2. 扩展性优秀3. 屏蔽产品类4. 解耦通用源码:抽象产品类public abstract class Product { public abstract void method();}具体产品类...原创 2018-05-08 15:04:57 · 108 阅读 · 0 评论 -
组合模式
定义 将对象组合成树形结构以表示”部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性.角色 抽象构件角色 定义参加组合对象的共有方法和属性,可以定义一些默认的行为或属性. 叶子构件 叶子对象,勘正再也没有其他的分支,也就是遍历的最小单位. 树枝构件 树枝对象,作用是组合树枝节点和叶子节点形成一个树形结构. ...原创 2018-05-21 23:26:05 · 88 阅读 · 0 评论 -
访问者模式
定义 封装一些作用于某种数据结构中的各元素,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作.角色 抽象访问者 抽象类或者接口,声明访问者可以访问哪些元素 具体访问者 实现具体该干什么 抽象元素 接口或者抽象类,声明接受哪一类访问者访问. 具体元素 实现具体方法 结构对象 元素产生者,一般容...原创 2018-05-26 00:19:57 · 169 阅读 · 0 评论 -
命令模式
定义 将一个请求封闭成一个对象 ,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能.角色 接收者角色: 干活的角色,命令传递到这里是应该被执行的. 命令角色: 执行的所有命令才在这里声明 调用者角色: 接收到命令,并执行命令 优点 类间解耦,调用者与接收者间没有任何的...原创 2018-05-16 01:00:10 · 77 阅读 · 0 评论 -
状态模式
定义 当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类.角色 抽象状态角色 接口或抽象类,负责对象状态定义,并且封装环境角色心实现状态切换. 具体状态角色 负责本状态的行为管理与趋向状态处理. 环境角色 负责具体状态的切换. 优点 结构清晰 封装性非常好 缺点 ...原创 2018-05-26 21:14:26 · 95 阅读 · 0 评论 -
观察者模式
定义 定义对象间一种一对多的依赖关系使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新.角色 被观察者 必须能够动态地增加与取消观察者,职责就是管理观察者并通知观察者. 观察者 观察者接收到消息,即进行更新操作,对接收到的消息进行处理. 具体的被观察者 具体的观察者 优点 观察者和被观察...原创 2018-05-23 01:31:47 · 81 阅读 · 0 评论 -
解释器模式
定义 给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子.角色 抽象解释器 终结符表达式 实现与文法中的元素相关联,通常一个解释器模式中只有一个终结符表达式,但有多个实例,对应不同的终结符. 3. 非终结符表达式 文法中的每条规则对应于一个非终结表达式 4. 环境角色优点...原创 2018-05-28 00:32:08 · 99 阅读 · 0 评论 -
门面模式
定义 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行.门面模式提供一个高层次的接口,使得子系统更易于使用.角色 门面角色 此角色知晓子系统的所有功能和责任. 子系统角色 可以同时有一个或多个子系统,每一个子系统都不是一个单独的类,而是一个类的集合. 优点 减少系统的相互依赖 提高了灵活性 提...原创 2018-05-24 01:59:17 · 133 阅读 · 0 评论 -
享元模式
定义 使用共享对象可有效地支持大量的细粒度的对象.对象的信息分为两个部分:内部状态和外部状态.对象信息 内部状态 对象可共享出来的信息,存储在享元对象内部并且不会随环境改变而改变. 外部状态 对象得以依赖的一个标记,是随环境改变而改变的,不可以共享的状态. 角色 抽象享元角色 一个产品的抽象类,同时定义出...原创 2018-05-29 00:10:23 · 101 阅读 · 0 评论 -
备忘录模式
定义 在不破坏封闭性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态.角色 发起人角色 记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据. 备忘录角色 负责存储发起人对象的内部状态,在需要的时候提供发起人需要的内部状态. 备忘录管理角色 对备忘...原创 2018-05-25 00:43:11 · 131 阅读 · 0 评论 -
单例模式
确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 优点:1. 减少了内存开支2. 减少了系统的性能开销3. 避免对资源的多重占用4. 可以在系统设置全局的访问点,优化和共享资源访问缺点:1. 单例模式一般没有接口,扩展很困难,2. 对测试是不利的3. 与单一职责原则有冲突锇汉模式public class Singleton { p...原创 2018-05-07 23:39:31 · 90 阅读 · 0 评论 -
责任链模式
定义 使多个对象才有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止.优点 将请求和处理分开.请求者可以不用知道是谁处理的,处理者可以不用知道请求的全貌,两者解耦,提高系统的灵活性缺点 性能问题,链越长,性能差. 调试不方便 通用代码框架代码...原创 2018-05-17 00:36:56 · 89 阅读 · 0 评论 -
模板方法模式
定义 定义一个操作中的算法的框架,而将一些步骤延迟支子类中.使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.方法分类1. 基本方法 由子类实现的方法,并且在模板方法被调用.2. 模板方法 可以有一个或几个,一般是一个具体方法,也就是一个框架,实现对基本方法的调度,完成固定的逻辑.优点1. 封装不变部分,扩展可变部分2. 提取公共...原创 2018-05-10 22:24:28 · 80 阅读 · 0 评论 -
建造者模式
定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.角色1. 产品类 通常实现了模板方法模式,也就是有模板方法和基本方法2. 抽象建造者 规范产品的组建由子类实现3. 具体建造者 实现抽象类定义的所有方法,并且返回一个组建好的对象4. 导演类 负责安排已有的模块的所有方法,然后告诉Builder开始建造优点...原创 2018-05-11 16:21:36 · 61 阅读 · 0 评论 -
装饰模式
定义 动态地栓一个对象添加一些额外的职责,就增加功能来说,装饰模式相比生成子类更为灵活.角色 1. 抽象构件: 是一个接口或者是抽象类,就是定义最核心的对象,也是原始的对象. 2. 具体构件: 是最核心,最原始,最基本的接口或抽象类的实现.需要装饰的角色. 3. 装饰角色: 一般是一个抽象类,实现接口或者抽象方法,里面不一定有抽象的...原创 2018-05-17 23:42:19 · 85 阅读 · 0 评论 -
策略模式
定义 定义一组算法,将每个算法都封闭起来,并且使它们之间可以互换.角色 封闭角色: 屏蔽高层模式对策略与算法的直接访问 抽象策略角色: 策略与算法家族的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性. 具体策略角色 实现抽象策略的操作,该类含有具体的算法.优点 算法可以自由切换 避...原创 2018-05-18 23:15:49 · 97 阅读 · 0 评论 -
代理模式
定义为其他对象提供一种代理以控制对这个对象的访问角色定义1. Subject抽象主题角色 抽象主题类可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求.2. RealSubject具体主题角色 也叫做被委托角色,被代理角色.3. Proxy代理主题角色 代理类优点1. 职责清晰2. 高扩展性3. 智能代通用代码...原创 2018-05-13 00:31:46 · 62 阅读 · 0 评论 -
原型模式
定义用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象优点1. 性能优良2. 逃避构造函数的约束(直接在内存中拷贝,构造函数不会执行) 缺点1. 构造函数不会执行,减少了约束 2. 对象的clone与对象内的final关键字是有冲突的3. java做了一个偷情动作,Object类提供的方法clone只是拷贝本对象,其对象内部的数组与引用对象等...原创 2018-05-13 22:39:33 · 73 阅读 · 0 评论 -
适配器模式
定义 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一直工作的两个类能够在一起工作.角色 目标角色: 该角色定义把其他类转换何种接口. 源角色: 转换成目标角色的角色. 适配器角色: 把源角色转换为目标角色的角色. 优点 可以把两个 没有任何关系的类在一起运行. 增加...原创 2018-05-20 00:33:33 · 81 阅读 · 0 评论 -
迭代器模式
定义 提供一种方法访问一个容器对象中各个元素,而又不需要暴露该对象的内部细节.角色 抽象迭代器 负责定义访问和遍历元素的接口. 具体迭代器 具体迭代器角色要实现迭代器接口,完成窗口元素的遍历. 抽象容器 负责提供创建具体迭代器角色的接口 具体容器 实现窗口接口定义的方法,创建出容纳迭代器的对象. 通用...原创 2018-05-21 00:19:50 · 106 阅读 · 0 评论 -
6大设计原则
单一职责原则简称: SRP定义: 应该有且仅有一个原因引起类的变更.好处: 1. 类的复杂性降低 2. 可读性提高 3. 可维护性提高 4. 变更引起的风险降低 里氏替换原则简称: LSP定义: 1. 如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有 的对象o1都代换成o2时,程序P的行...原创 2018-05-07 09:59:55 · 732 阅读 · 0 评论 -
桥梁模式
定义 将抽象和实现解耦,使得两者可以独立地变化.角色 抽象化角色 定义出该角色的行为,同时保存一个对实现化角色的引用 实现化角色 定义角色必需的行为和属性 具体抽象化角色 引用实现化角色对抽象化角色进行修正 具体实现化角色 实现接口或抽象类定义的方法和属性 优点 抽象和实现分离 优秀的扩充能...原创 2018-05-30 00:02:03 · 116 阅读 · 0 评论