设计模式
文章平均质量分 90
程序员的暴击
业精于勤,荒于嬉;行成于思,毁于随。
展开
-
设计模式之命令模式
命令模式其他模式命令模式是一种行为设计模式, 它可将请求转换为一个包含与请求相关的所有信息的独立对象。 该转换让你能根据不同的请求将方法参数化、 延迟请求执行或将其放入队列中, 且能实现可撤销操作。命名模式使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活,实现解耦。概括:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。核心:将发起请求的对象与执行请求的对象解耦。模式结构抽象命令类(Command)角色:声明执行命令的接口,拥有执行命令的抽象方法 e原创 2021-06-18 08:31:28 · 583 阅读 · 1 评论 -
设计模式之职责链模式
职责链模式其他模式职责链模式是一种行为设计模式, 允许你将请求沿着处理者链进行发送。 收到请求后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理者。职责链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。责任链将请求的发送者和请求的处理者解耦了。概括:把请求从链中的一个对象传到下一个对象,直到请求被响应为止。通过这种方式去除对象之间的耦合。职责链模式存在以下两种情况。纯的职责链模式:一个请求必须被某一个处理原创 2021-06-18 08:32:45 · 440 阅读 · 1 评论 -
设计模式之访问者模式
访问者模式其他模式访问者模式是一种行为设计模式, 它能将算法与其所作用的对象隔离开来。访问者模封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。主要将数据结构与数据操作分离,解决数据结构和操作耦合性问题概括:在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素有多个访问者对象访问。核心:在被访问的类里面加一个对外提供接待访问者的接口; 为整个类层次结构添加 “外部” 操作, 而无需修改这些类的已有代码。模式结构抽象访原创 2021-06-18 08:32:33 · 253 阅读 · 0 评论 -
设计模式之迭代器模式
迭代器模式其他模式迭代器模式是一种行为设计模式, 让你能在不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素。迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构。概括: 定义一个中介对象来简化原有对象之间的交互关系,降低系统中对象间的耦合度,使原有对象之间不必相互了解。模式结构抽象聚合(Aggregate)角色:定义存储、添加、删除聚合对象以及创建迭代器对象的接口。具体聚合(ConcreteAgg原创 2021-06-17 17:38:48 · 160 阅读 · 1 评论 -
设计模式之观察者模式
观察者模式观察者模式是一种行为设计模式, 允许你定义一种订阅机制, 可在对象事件发生时通知多个 “观察” 该对象的其他对象。多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式概括:多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象,从而影响其他对象的行为。模式结构抽象主题(Subject)角色:也叫抽象目标类,它提供了一个用于保存观察者对象的聚集类和增原创 2021-06-17 17:38:24 · 130 阅读 · 1 评论 -
设计模式之中介者模式
中介者模式其他模式中介者模式是一种行为设计模式, 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互, 迫使它们通过一个中介者对象进行合作。中介者模式(Mediator Pattern ),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。类似比如MVC模式,C(Controller控制器)是M(Model模型)和V(View视图)的中介者,在前后端交原创 2021-06-17 17:37:36 · 180 阅读 · 1 评论 -
设计模式之备忘录模式
备忘录模式其他模式备忘录模式是一种行为设计模式, 允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。该模式又叫快照模式。属于行为型模式。备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。概括:在不破坏封装性的前提下,获取并保存一个对象的内部状态,以便以后恢复它。模式结构发起人(Originator)角色:记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其原创 2021-06-17 17:37:04 · 157 阅读 · 1 评论 -
设计模式之状态模式
状态模式其他模式状态模式是一种行为设计模式, 让你能在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。它主要用来解决对象在多种状态转换时,需要对 输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类概括:允许一个对象在其内部状态发生改变时改变其行为能力。核心:改变一个对象的状态时,输出不同的行为。模式结构环境类(Context)角色:也称为上下文,它定义了客户端需要的接口,内部原创 2021-06-17 17:36:37 · 182 阅读 · 1 评论 -
设计模式之代理模式
代理模式代理模式是一种结构型设计模式, 让你能够提供对象的替代品或其占位符。 代理控制着对于原对象的访问, 并允许在将请求提交给对象前后进行一些处理。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或 需要安全控制的对象代理模式有不同的形式, 主要有三种静态代理、理动态代理 (JDK代理、接口代理 )和 Cglib代理(可以在内存动态的创建对象,而不需要实现接口,他是属于动态代理的范畴)。概括:为某对象提供一种代理以原创 2021-06-17 17:36:04 · 157 阅读 · 1 评论 -
设计模式之适配器模式
适配器模式概述适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)适配器模式属于结构型模式主要分为三类:类适配器模式、对象适配器模式、接口适配器模式概述:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。核心: 兼容,转换;让接口不兼容的类可以兼容,让类与类之间可以协调工作,当被适配的类变化的时候,通过适配原创 2021-06-17 17:35:12 · 240 阅读 · 1 评论 -
设计模式之单例模式
单例模式单例(Singleton)模式:某采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。概括:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式单例模式特点:单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问该单例的全局访问点饿汉式单例模式类一旦加载就创建一个单例,保证在调用 getInstance 方法之前单例已经存在了饿汉式(静态常量)pub原创 2021-06-17 17:34:34 · 128 阅读 · 1 评论 -
设计模式之策略模式
策略模式其他模式策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。此模式让算法的变化独立于使用算法的客户此算法体现了几个设计原则:把变化的代码从不变的代码中分离出来。针对接口编程而不是具体类(定义了策略接口)。多用组合/聚合,少用继承(客户通过组合方式使用策略。策略模式的关键是:分析项目中变化部分与不变部分 。概括:定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的改变不会影响使用算法的客户。核心:原创 2021-06-17 17:33:59 · 152 阅读 · 1 评论 -
设计模式总结
概述软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。设计模式是软件设计中常见问题的典型解决方案。 每个模式就像一张蓝图, 你可以通过对其进行定制来解决代码中的特定设计问题。设计模式目的代码重用性 (即:相同功能的代码,不用多次编写)可读性 (即:编程规范性, 便于其他程序员的阅读和理解)可扩展性 (即:当需要增加新的功能时,原创 2021-06-17 17:33:01 · 2256 阅读 · 1 评论