
设计模式
文章平均质量分 92
Gof设计模式系列(Java实现)。
网忆小叶
用心丶用行
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
状态设计模式
状态模式(State)是一种行为型设计模式。当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。简单来说就是,一个含有多种状态的实例,其行为随状态的变化而变化。原创 2020-04-10 13:02:42 · 463 阅读 · 0 评论 -
策略设计模式
策略模式(Strategy)是一种行为型设计模式。该模式定义了一个算法簇,用不同的类分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。很好的满足了开闭原则原创 2020-04-10 13:01:02 · 308 阅读 · 0 评论 -
责任链设计模式
责任链模式(Chain of Responsibility)是一种行为型设计模式。该模式使得多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链(与链表结构类似),并沿着这条链传递该请求,直到有一个对象完成处理为止。原创 2020-04-08 18:51:55 · 364 阅读 · 0 评论 -
备忘录设计模式
备忘录模式(Memento)是一种行为型设计模式,该模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。原创 2020-04-01 15:45:10 · 489 阅读 · 0 评论 -
访问者设计模式
访问者模式(Visitor)是一种结构型设计模式,表示一个作用于对象结构中的各元素的操作。它可以使你在不改变各元素类型的前提下定义作用于这些元素的新操作。值得注意的是,当对象结构中需要新增元素时,访问者这一角色,都需要添加对新增元素的操作行为。因此大部分场景下,我们不太会用到该设计模式,因为元素类型总是会变化,此时采用访问者模式不满足开闭原则。原创 2020-03-31 18:17:39 · 837 阅读 · 0 评论 -
命令设计模式
命令设计模式(Command)是一种行为型设计模式。该模式将一个请求、与具体的命令执行者封装成不同的对象。这种设计一方面可以对客户端的请求进行参数化,另一方面可以将命令的接收和执行很好的进行解耦。原创 2020-03-30 21:01:24 · 358 阅读 · 0 评论 -
迭代器设计模式
迭代器设计模式(Iterator)是一种结构型设计模式。该模式提供一种方法顺序访问一个聚合对象(如:JDK中的容器对象ArrayList等)中各个元素,而又不暴露该对象的内部表示。原创 2020-03-20 16:18:11 · 643 阅读 · 0 评论 -
观察者设计模式
观察者设计模式(Observer)是一种行为型设计模式。该模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象(Subject,即被观察对象)。这个主题对象在状态发生变化时,会通知所有观察者对象,是它们能够自动更新自己。原创 2020-03-20 10:59:34 · 265 阅读 · 0 评论 -
中介者设计模式
中介者设计模式(Mediator)是一种行为型设计模式。该模式引入中介对象来封装一系列的对象交互,并使这一系列的对象之间原本需要相互调用的依赖关系,全部转成对中介对象的单独依赖,即将多个对象的依赖关系由网状模型的转变成星状模型,从而使多个对象之间松耦合。原创 2020-03-19 14:03:43 · 354 阅读 · 0 评论 -
解释器设计模式
解释器设计模式1. 简单介绍模板方法设计模式是一种结构型设计模式。该模式定义了一个算法的骨架(方法执行的步骤),将算法的各个步骤的具体实现,交由子类完成。模板方法设计模式,让开发者只需要关注算法实现各个细节,而不必关系算法实现的全部流程。2. 使用场景具有统一的算法骨架,即方法执行步骤是固定不变的针对不同的场景,存在多个具有相同操作步骤的应用场景,但部分算法的实现细节有所差异3....原创 2020-03-16 22:55:57 · 497 阅读 · 0 评论 -
模板方法设计模式
模板方法设计模式1. 简单介绍模板方法设计模式是一种结构型设计模式。该模式定义了一个算法的骨架(方法执行的步骤),将算法的各个步骤的具体实现,交由子类完成。模板方法设计模式,让开发者只需要关注算法实现各个细节,而不必关系算法实现的全部流程。2. 使用场景具有统一的算法骨架,即方法执行步骤是固定不变的针对不同的场景,存在多个具有相同操作步骤的应用场景,但部分算法的实现细节有所差异3...原创 2020-01-19 21:16:30 · 409 阅读 · 0 评论 -
代理设计模式
代理设计模式简单介绍代理设计模式是一种结构型设计模式。该模式是将能在不修改既有代码的前提下,完成对被代理对象的功能扩展,以及安全控制等功能。使用场景远程代理:目标类存在于另一个地址空间(可以简单理解为在另一台服务器上),在调用目标类接口方法时,可以通过调用代理类的接口方法,再由代理类与远端目标类进行通信。完成远程方法的透明调用。RPC框架的实现原理便是如此保护代理:目标对象的...原创 2019-12-20 20:32:51 · 236 阅读 · 0 评论 -
享元设计模式
享元设计模式简单介绍享元模式是一种创建型设计模式。该模式旨在将对象的粒度细分,通过某种共享方式,将创建完成的对象重复利用。以此来降低创建对象时的开销,一定程度上也能节省内存资源。使用场景程序中使用了大量相同类型的对象,这些对象在在创建时耗资源,并且占用空间较大,此种情况可以考虑使用享元模式。其次,当一个对象的大部分属性可以转换成外部状态属性,那么可以将外部状态属性抽取出来,通过传...原创 2019-12-13 18:23:53 · 340 阅读 · 0 评论 -
外观设计模式
外观设计模式简单介绍外观模式又称为门面设计模式,是一种结构型设计模式。该模式旨在通过某个类(门面类),聚合各个子系统,并对外提供一组易用的接口。接口的复杂业务,由门面类通过其聚合的子系统协作完成。对于上游调用者来说完全透明。使用场景客户程序的实现,依赖多个子系统共同提供的服务。此种场景可以引入门面模式,通过门面类来聚合不同的子系统,对外提供统一、易用的接口,供客户程序直接调用。...原创 2019-12-08 22:47:17 · 352 阅读 · 0 评论 -
组合设计模式
组合设计模式简单介绍组合模式是一种结构型设计模式。该模式以组合的方式将具有相似性(对外具有一致性行为,即实现相同的接口)的对象以树的形式进行组织(对象分为根节点和叶子节点等),最终呈现出“整体-部分”的层次结构。使用场景对象的逻辑关系具备树的结构,且各个对象对外的行为需要保持一致性。场景举例JDK中的HashMap采用了组合设计模式。HashMap中的元素可以简单理解为叶...原创 2019-12-05 00:22:10 · 321 阅读 · 0 评论 -
装饰者设计模式
装饰者设计模式简单介绍装饰者模式是一种结构型设计模式。该模式能够动态的将新的功能附加(装饰)在某个类(被装饰者)的方法中。该模式能够很好的满足OCP原则。使用场景项目开发过程中,需要对某个类的方法在已有功能的基础上进行一个增强。并且不希望该类原有代码进行修改。场景举例JDK中有许多针对字节流传输的类(InputStream的子类),如:FileInputStream类等,...原创 2019-12-01 21:57:04 · 294 阅读 · 0 评论 -
桥接设计模式
桥接设计模式简单介绍桥接模式是一种结构型设计模式。该模式是将抽象和具体的实现这两个维度独立开来,二者互不影响,可以独立的扩展。通过组合的方式,将二者进行关联。使用场景一个类存在两个变化的维度,且这两个变化维度都有扩展的需求,那么这种类在结构在设计时可以采用桥接模式。例如:对智能手机App进行类的设计时,可以对其抽象出两个维度。其中一个维度是手机的操作系统(如新增一个鸿蒙系统),另...原创 2019-11-29 19:57:27 · 809 阅读 · 0 评论 -
适配器设计模式
适配器设计模式简单介绍原型设计模式是一种结构型设计模式。该模式是将能够满足用户需求,但无法直接使用的接口,通过某种方式进行兼容、适配,对外提供用户能够直接使用的接口(目标接口)。使用场景项目中的部分功能完善老接口无法供新接口直接调用(老接口需要的参数,与新接口提供的参数部分不一致,需要进行一次转换),可以采用适配器模式对老接口进行兼容,继续使用。场景举例SpringBoo...原创 2019-11-26 22:25:59 · 257 阅读 · 0 评论 -
建造者设计模式
建造者设计模式简单介绍建造者模式是一种创建型设计模式。将对象的各个属性构造进行抽象,针对该抽象,不同的实现可以创建出具有不同属性值的实例对象。同时隐藏具体的对象构造过程,让程序员只需对实例对象进行属性设值,而不用关心对象的具体构造。使用场景对象的创建过程步骤较多,可以通过建造者模式屏蔽创建过程。与工厂模式不同的是,建造者暴露对象建造的细节(属性),程序员可以自定对象的属性值。...原创 2019-11-23 15:21:50 · 172 阅读 · 0 评论 -
原型设计模式
原型设计模式简单介绍原型设计模式是一种创建型设计模式。通过原型实例对象创建与该实例相同类型的对象实例,且将原型(可以简单理解为成员属性)拷贝给新创建的对象实例。使用场景需要创建与某个实例对象具有相同状态(成员变量值相同)的对象。场景举例Spring获取Bean对象时,其中一种方式采用了原型设计模式。通过配置scope属性为prototype来指定创建原型对象。UML...原创 2019-11-20 10:29:00 · 338 阅读 · 0 评论 -
单例设计模式
单例设计模式简单介绍通过一定的方法,保证在整个软件系统(一个进程)中,某个类只有唯一的对象实例,并且该对象实例可以通过此类的类方法进行获取使用场景需要频繁的进行创建和销毁对象,创建对象耗时过多或消耗资源过多,但又经常使用的对象,如工具类对象、频繁访问数据库或文件的对象(数据源、session工厂)等场景举例Hibernate中的SessionFactory充当数据存储源的...原创 2019-11-19 12:57:05 · 131 阅读 · 0 评论 -
抽象工厂设计模式
抽象工厂设计模式简单介绍抽象工厂模式属于创建型设计模式,是工厂模式的一种实现。工厂方法是按产品级维度对工厂进行抽象,而抽象工厂是按产品族维度对工厂进行抽象。产品级可以简单的理解为具体的单个产品,产品族则是有多个产品构成。如苹果公司生产的手机、手表等单个产品可以简单理解为产品级,这些苹果公司生产的这一系列产品(手机、手表)放在一起则可以简单理解为一个产品族。使用场景业务中需要针对产...原创 2019-11-19 12:55:05 · 139 阅读 · 0 评论 -
工厂方法设计模式
工厂方法设计模式简单介绍工厂方法模式属于创建型设计模式,是工厂模式的一种实现。工厂方法模式将工厂类进行抽象,由具体的工厂决定需要生产(实例化)的类。工厂方法模式将对象的实例化推迟到子类。使用场景想要隔离具体实现,让客户端只通过接口便能得到想要的实例对象。 把创建对象的职责集中管理和控制 。与简单工厂不同的是,当需要生产新的对象类型时,简单工厂需要修改工厂类的内容,而工厂方法则需要...原创 2019-11-19 12:53:10 · 217 阅读 · 0 评论 -
简单工厂设计模式
简单工厂设计模式简单介绍简单工厂模式属于创建型设计模式,是工厂模式的一种实现。简单工厂模式中,专门有一个负责创建各类产品实例的对象(即工厂对象),并提供一个静态方法(故简单工厂有称为静态工厂),返回创建好的实例对象。使用场景想要隔离具体实现,让客户端只通过接口便能得到想要的实例对象。 把创建对象的职责集中管理和控制 。场景举例JDK中的Calendar类,根据客户端给定的...原创 2019-11-19 12:49:35 · 188 阅读 · 0 评论 -
设计模式原则
设计模式原则设计模式意义增加代码重用性,尽可能复用已有功能代码增加代码可读性,便于他人理解提升代码可扩展性,能够做到拥抱需求变化提升代码可靠性,新增功能时,不影响已有的业务功能使得代码具备高内聚、低耦合等特性七大设计原则单一职责维基百科在面向对象编程领域中,单一功能原则(Single responsibility principle)规定每个...原创 2019-11-19 12:43:34 · 129 阅读 · 0 评论