![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 88
soliderzzz
沉迷学习,不能自拔,strategic FooYou Agent
展开
-
设计模式的分类
以下是学习过程中查询的资料,别人总结的资料,比较容易理解(站在各位巨人的肩膀上,望博主勿究)面向对象的设计原则单一职责原则每个类只承担一个职责。里氏替换原则子类可以扩展父类的功能,但是不能改变父类原有的功能。依赖倒置原则依赖于接口编程,而不是依赖于实现细节编程。接口隔离原则无需被迫依赖于他用不到的方法。迪米特法则调用者对目标对象的了解最少,而且不和陌生人...原创 2018-10-19 09:40:42 · 190 阅读 · 0 评论 -
备忘录模式
备忘录模式 备忘录模式是一种软件设计模式:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。一听到备忘录这个字的时候想起了小小时打的游戏,每次遇到大boss的时候都会保存一下进度,打过了就不需要恢复记录,打不过肯定就复原到刚刚保存的记录咯,重新打一遍BOSS,打死为止。哈哈,这就是备忘录模式,虽然很多模式都只是学到基础,但是发...原创 2018-10-22 10:06:37 · 108 阅读 · 0 评论 -
观察者模式
1、初步认识观察者模式的定义: 在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。大白话: 其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。2、这个模式的结构图3、可以看到,该模式包含四个角色抽象被观察者角色:也就是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,...原创 2018-10-22 10:10:03 · 112 阅读 · 0 评论 -
状态模式
状态模式(State)的定义定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类状态模式(State)适用性 1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。 2.一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态...原创 2018-10-22 10:13:55 · 125 阅读 · 0 评论 -
策略模式
写代码时总会出很多的if…else,或者case。如果在一个条件语句中又包含了多个条件语句就会使得代码变得臃肿,维护的成本也会加大,而策略模式就能较好的解决这个问题,本篇博客就带你详细了解策略模式。策略模式的定义和使用场景定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化。分析下定义,策略模式定义和封装了一系列的算法,它...原创 2018-10-22 10:23:40 · 97 阅读 · 0 评论 -
模板方法模式
一、概述 模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。二、结构类图三、解决问题模板方法就是提供一个算法框架,框架里面的步骤有些是父类已经定好的,有些需要子类自己实现。相当于要去办一件事情,行动的流程已经定好了,但有些步骤需要自己去做,而有些步骤可能别人帮我们做了。就拿建网站来说,一...原创 2018-10-23 08:39:48 · 213 阅读 · 0 评论 -
访问者模式
废话不多说,我们先来看看访问者模式的定义。 定义(源于GoF《Design Pattern》):表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。 初次接触,定义会显得晦涩并且难于理解,没关系,LZ来陪着各位一起一点一点分析定义中所提到的关键点。 先来看第...原创 2018-10-23 08:39:58 · 1284 阅读 · 0 评论 -
设计模式 —— 装饰器模式(Decorator Pattern)
Drink 接口类:package DesignPattern.Strategy.Decorator;public interface Drink { public float cost(); public String getDescription();}1 2 3 4 5 6Coffee 类:package DesignPattern.S...翻译 2018-04-30 18:08:32 · 153 阅读 · 0 评论 -
装饰模式
装饰模式装饰模式 概念 角色及职责 案例 概念 装饰( Decorator )模式又叫做包装模式。通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。 装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地、按顺序地使用装饰功能包装对象。角色及职责compone...原创 2018-06-25 17:21:16 · 121 阅读 · 0 评论 -
java--桥接模式详解
1、什么是桥接模式、为什么要桥接? 简单说桥接模式就是把两个纬度分离,所以说当我们在实际开发的时候,遇到两个维度问题的时候,直接条件反射桥接模式。就像上述问题,当有两个维度(品牌+机器类型)赋予给一个类的时候,基于单一职责原则,需要把它们解耦。那通过上述范例可知,那么我们就需要一座桥一样,把两个纬度用一个中间物(类或者接口)把它们关联起来,从而达到我们的目的。2、桥接模式怎么接?...转载 2018-06-20 21:34:22 · 595 阅读 · 0 评论 -
组合模式?
什么是组合模式?组合模式允许你将对象组合成树形结构来表现”部分-整体“的层次结构,使得客户以一致的方式处理单个对象以及对象的组合。组合模式实现的最关键的地方是——简单对象和复合对象必须实现相同的接口。这就是组合模式能够将组合对象和简单对象进行一致处理的原因。组合部件(Component):它是一个抽象角色,为要组合的对象提供统一的接口。 叶子(Leaf):在组合中表示子节点对象,叶...原创 2018-10-20 16:58:39 · 168 阅读 · 0 评论 -
中介者模式
我们平时写代码的过程,一个类必然会与其他类产生依赖关系,如果这种依赖关系如网状般错综复杂,那么必然会影响我们的代码逻辑以及执行效率,适当地使用中介者模式可以对这种依赖关系进行解耦使逻辑结构清晰,本篇博客,我们就一起学习中介者模式。定义及使用场景定义:中介者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使它们可以松散耦合。当某些对象之间的作用发生改变...原创 2018-10-22 10:02:54 · 96 阅读 · 0 评论 -
迭代模式
迭代器模式定义迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。迭代器模式的角色构成(1)迭代器角色(Iterator):定义遍历元素所需要的方法,一般来说会有这么三个方法:取得下一个元素的方法next(),判断是否遍历结束的方法hasNext()),移出当前对象的方法remove(),(2)具体迭代器角色(Concrete ...原创 2018-10-22 09:53:25 · 221 阅读 · 0 评论 -
工厂模式:工厂方法与抽象工厂的战争
概述什么是工厂方法?什么是抽象工厂?工厂方法是指工厂生产产品,而抽象工厂是生产产品系列。例如,工厂方法是只生产运输工具比如马车、公共汽车、自行车,而抽象工厂生产轮胎、螺丝钉交通工具零件。工厂方法模式定义了一个创建对象的接口,但由子类决定实例化的类是哪一个。工厂方法让类把实例化推迟到子类。抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。简单工厂...原创 2018-10-19 09:49:18 · 158 阅读 · 0 评论 -
建造者模式:设计角度重温游戏中的角色
应用场景 假设现在我们要设计DNF中的人物角色(鬼剑士、神枪手、魔法师、圣骑士、格斗家)。然而,利用面对对象的思想,必须先从实体入手,每一个角色都包含各种装备、武器、配饰,这些就当做要建造的零件,然后把装备零件组装起来,那么就是最终人物角色的能量值,然后它就将造成不同的伤害。 回忆过程:假设要创建一个角色,先构建装备零件,控制者控制组装装备零件,构建者得到专属角色。简述实现 建造...原创 2018-10-19 09:58:06 · 299 阅读 · 0 评论 -
原型模式(克隆模式):浅谈浅克隆与深克隆
克隆是什么?它的产生背景?当new的对象是多例的时候,new对象将会不断占据内存。特别是消耗内存的大对象,比如数据库连接等。平时运用的不多,只在spring等容器有见过,此处不多赘述,了解即可。浅克隆与深克隆是什么意思?通过案例逐步探讨。浅克隆(shallow clone),浅克隆是指拷贝对象时仅仅copy对象本身和对象中的基本变量,而不拷贝对象包含的引用指向的对象。深克隆(dee...原创 2018-10-19 10:00:48 · 1412 阅读 · 0 评论 -
单例模式:层层剖析寻找最高效安全的单例
问题来源 什么是单例?它的运用场景是什么? 单例模式是指保证在系统中只存在某类唯一对象。运用场景随处可见,例如工具类、Spring容器默认new对象等。 单例模式有几种实现方式? 饿汉式、懒汉式、双重检查锁式、内部类式、枚举式。 推荐使用方式? 饿汉式、内部类式。饿汉式饿汉式顾名思义饿,那么当应用程序一开始类加载,类的对象立马实例化加载至JVM。/*...原创 2018-10-19 10:18:13 · 165 阅读 · 0 评论 -
适配器模式:揭秘措不及防需求变化的补救措施
目录概述与模型1、概述 含义:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 说明:这是一种补救措施,在最开始设计的时候不建议使用这种设计模式。 分类:类适配器、对象适配器。类适配器就是采用继承的方式,对象适配器采用组合的方式,源于Java里面只支持单继承,所以此处只实现对象适配器。2、模型 应用场景描述场景描述...原创 2018-10-19 10:23:11 · 202 阅读 · 0 评论 -
代理模式:利用JDK原生动态实现AOP
目录概述与模型1、概述 含义:控制对对象的访问。 作用:详细控制某个(某类)某对象的方法,在调用之前做前置处理,调用之后做后置处理,从而实现将统一流程代码放在代理类中处理。 举例:我们在学习JDBC的时候,在批量处理的时候遇到过事务。流程:设置提交方式为手动提交-开启事务-批量处理-关闭事务-设置提交方式为默认。从这里我们清晰可以看见,每次进行批处理的时候,唯有增删改操作...原创 2018-10-19 10:47:34 · 317 阅读 · 0 评论 -
享元模式
摘要: 面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。享元模式通过共享技术实现相同或相似对象的重用提高系统资源的利用率。本文首先阐述了享元模式要解决的问题和解决问题的理念,然后从实现角度重点说明了该模式的本质,并进一步给出了其所包含的角色和组织结构。最后,给出了共享模式的应用实例和使...原创 2018-10-22 09:25:34 · 111 阅读 · 0 评论 -
责任链模式
简述: 前端时间再看一些类库的源码,发现责任链模式的强大之处,尤其是和建造者模式的结合后强大的动态可扩展性更是牛逼的一塌糊涂。接下来赶紧了解一下吧! 我们先来了解一下什么是责任链模式: 职责链模式(Chain of Responsibility):使多个对象都有机会处理同一个请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直...原创 2018-10-22 09:32:04 · 181 阅读 · 0 评论 -
命令模式
一、命令模式定义命令大家都不会陌生,那么在开始命令模式之前,可以想象一下生活中的命令模式的特点:如老板命令你完成一个OA项目是一个命令,接着看看其特点:1、在上面的命令中,命令的执行者肯定是聪明的你了。具体的执行方法,可能是通过vs实现,或者是通过eclipse实现,由此看来:命令要有个命令的执行者,还要有个命令的执行方法。2、命令的发出者很明显是老板,老板还有个发出方法,可能是通...原创 2018-10-22 09:47:29 · 11615 阅读 · 3 评论 -
解释器模式
解释器模式(Interpreter)定义 解释器模式(Interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。类图描述Expression:抽象表达式,声明一个所有的具体表达式都需要实现的抽象接口;这个接口主要是一个interpret()方法,称做解释操作。Terminal Expression...原创 2018-10-22 09:49:13 · 150 阅读 · 0 评论 -
外观模式
医院的例子 现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。 首先病人必须先挂号,然后门诊。如果医生要求化验,病人必...转载 2018-10-20 17:04:32 · 92 阅读 · 0 评论