
设计模式
言葉长琴
这个作者很懒,什么都没留下…
展开
-
职责链模式
介绍职责链模式(Chain of Responsibility Pattern),又叫责任链模式,为请求创建了一个接收对象的链,这种模式对请求的发送者和接收者进行解耦职责链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,以此类推这种类型的设计模式属于行为型模式原理Handler:抽象的处理者,定义了一个处理请求的接口,同时含有另外HandlerConcreteHandlerA、B:具体的处理者,负责处理它负责的请求,可以访问它原创 2020-09-15 09:44:47 · 78 阅读 · 0 评论 -
策略模式
介绍策略模式(Strategy Pattern)中,定义算法簇,分别封装起来,让它们之间可以互相替换,此模式让算法额变化独立于使用算法的客户这算法体现了几个设计原则,第一、把变化的代码从不变的代码中分离出来;第二、针对接口编程而不是具体类(定义了策略接口);第三、多用组合/聚合,少用继承(客户通过组合方式使用策略) WildDuck wildDuck = new WildDuck(); wildDuck.fly();// PekingDuck pekingDuck = new Pekin原创 2020-09-14 21:11:47 · 151 阅读 · 0 评论 -
状态模式
介绍状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出行为的问题。状态和行为是一一对应的,状态之间可以互相转换当一个对象的内在状态改变时,允许改变其行为,这个对象看起来时改变了其类原理Context类为环境角色,用于维护State实例,这个实例定义当前状态State为抽象状态角色,定义一个接口封装与Context的一个特点接口享元行为ConcreteState是具体的状态角色,每个子类实现一个与Context的uohe状态相关行为 // 创建活动原创 2020-09-14 17:50:20 · 204 阅读 · 1 评论 -
解释器模式
介绍在编译原理中,一个算术表达式通过词法分析器形成词法单元,而后这些此法再通过语法分析器构建语法分析树,最终形成一棵抽象的语法分析树。这里的词法分析器和语法分析器都可以看作是解释器解释器模式(Interpreter Pattern)是指给定一个语言(表达式),定义它的文法的一种表示,并定义一个解释器,使用该解释器来解释语言中的句子(表达式)应用场景● 运用可以将一个需要解释执行的语言中的句子表示为一个抽象语法树● 一些重复出现的问题可以用一种简单的语言表达● 一个简单语法需要解释的场景这原创 2020-09-14 16:34:10 · 105 阅读 · 0 评论 -
备忘录模式
介绍备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态可以这样理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录以及达成的共同意见的事情,以防忘记了。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行恢复操作备忘录模式属于行为型模式原理originator:对象(需要保原创 2020-09-14 16:09:51 · 217 阅读 · 0 评论 -
中介者模式
介绍中介者模式(Mediator Pattern),用一个中介对象来封装一系列的对象交互,中介者使各个对象不需要显示的互相引用,从而使其耦合松散,而且可以独立的改变他们之间的交互中介者模式属于行为型模式,代码易于维护比如MVC模式,C(Controller控制器)是M(Model模型)和V(View视图)的中介者,在前后端交互时起到了中间人的作用原理Mediator就是抽象中介者,定义了同事对象到中介者对象的接口Colleague是抽象同事类ConcreteMediator是具体的中介者原创 2020-09-14 15:53:52 · 84 阅读 · 0 评论 -
观察者模式
介绍指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。原理观察者模式类似订牛奶业务奶站/气象局:Subject用户/第三方网站:ObserverSubject:登记注册、移除和通知registerObserver 注册removeObserver 移除notifyObservers() 通知所有的注册的用户,根据不同需求,可以是更新数据,让用 户来取,也原创 2020-09-14 15:31:37 · 351 阅读 · 0 评论 -
迭代器模式
介绍迭代器模式(Iterator Pattern)是常用的设计模式,属于行为型模式如果我们的集合元素是不同的方式实现的,有数组,还有java集合类,或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决迭代器模式,提供一种便利集合元素的统一接口,用已知的当打便利集合元素,不需要知道集合对象的底层表示,即:不暴露内部的结构原理Iterator:迭代器接口,是系统提供,含有hasNext,next,removeConcre原创 2020-09-14 15:15:45 · 87 阅读 · 0 评论 -
访问者模式
介绍访问者模式(Visitor Pattern),封装一些作用域某种数据结构的各元素的操作,它可以在不改变数据结构的前提下作用于这些元素的新的操作主要将数据结构与数据操作分离,解决数据结构和操作耦合性问题访问者模式的基本工作原理是:在被访问的类里面加一个对外提供接待访问者的接口访问者模式的主要应用场景:需要对一个对象结构中的对象进行很多不同的操作(操作彼此之间没有关联),同时需要避免让这些操作”污染“这些对象的类,可以选用访问者模式解决原理Visitor 抽象访问者:为该对象结构中的Con原创 2020-09-14 14:55:09 · 80 阅读 · 0 评论 -
命令模式
介绍命令模式(Command Pattern):在软件设计中,我们经常需要向某些对象发送请求,但并不需要知道请求的接收者是谁,也不知道被请求的操作是什么我们只需要在程序执行时指定具体的请求接受者即可,此时,可以使用命令模式来进行设计命令模式是的请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活,实现解耦在命令模式中,会将一个请求封装为一个对象,以便使用不同的参数表示请求(即命名),同时命令模式也支持可撤销的操作通俗易懂的理解: 将军发布命令,士兵去执行。其中有几个角色:将军(原创 2020-09-14 00:38:44 · 107 阅读 · 0 评论 -
模板方法模式
介绍模板方法模式(Template Method Pattren),又叫模板模式,在一个抽象类公开定义了执行他的方法的模板,它的子类可以按需重写方法实现,但调用将以抽象类中定义的方式进行简单说,模板方法模式定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中,是的子类可以不改变一个算法的结构,就可以重新定义该算法的某些特定步骤这种设计模式属于行为型模式原理AbstractClass 抽象类,类中实现了模板方法(template),定义了算法的骨架,具体子类需要去实现其他的抽象方法opera原创 2020-09-14 00:18:16 · 81 阅读 · 0 评论 -
代理模式
介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象代理模式有不同的形式,主要有三种,静态代理、动态代理(JDK代理,接口代理)和Cglib代理(可以在内存动态的创建对象,而不需要实现接口,他是属于动态代理的范畴)静态代理模式的基本介绍静态代理在使用时,需要定义接口或者父类,被代理对象(即目标对象)与代理对象一原创 2020-09-11 17:01:14 · 108 阅读 · 0 评论 -
享元模式
介绍享元模式(Flyweight Pattern)也叫蝇量模式:运用共享技术有效的支持大量细粒度的对象常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的链接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个享元模式能够解决重复对象的内存浪费的问题,当系统中有大量相似对象,需要缓冲池时。不需要总是创建新对象,可以从缓冲池拿。这样可以降低系统内存,同时提高效率享元模式经典的应用场景就是池技术了,String常量池,数据库连接池,缓冲池等等原创 2020-09-11 16:27:49 · 84 阅读 · 0 评论 -
外观模式
介绍外观模式(Facade),也叫“过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节说明外观类(Facade):为调用端提供统一的调用接口,外观类知道哪些子系统负责处理请求,从而将调用端的请求代理给适当子系统对象调用者(Client):外观接口的调用者子系统的集合:指模块或者子系统,处理Facade对原创 2020-09-11 15:44:04 · 124 阅读 · 0 评论 -
组合模式
介绍组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系组合模式依据树形结构来组合对象,用来表示部分以及整体层次这种类型的设计模式属于结构型模式组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理个别对象以及组合对象分析Component:组合中对象声明接口,在适当情况下,实现所有类的共有接口默认行为,用于访问和管理Component子部件,Component可以是抽原创 2020-09-11 14:51:37 · 76 阅读 · 0 评论 -
装饰者模式
定义动态的将新功能附加到对象上,在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp)原理装饰着模式就像打包一个快递主体:比如:陶瓷、衣服(Component) //被装饰者包装:比如:报纸填充、塑料泡沫、木板(Decorator)Component:主体ConcreteComponent和DecoratorConcreteComponent:具体的主体Decorator:装饰者在Component和ConcreteComponent之间,如果ConcreteCom原创 2020-09-11 13:49:02 · 91 阅读 · 0 评论 -
桥接模式
介绍桥接模式(Bridge Pattern)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变是一种结构型设计模式桥接模式基于类的最小设计原则,通过使用封装、聚合以及继承等行为让不同的类担任不同的职责。它的主要特点是把抽象(Abstraction)与实现(Implementation)分离开来,从而可以保持各个部分的独立性以及对应他们的功能的扩展原理Client类:桥接模式的调用者抽象类(Abstraction):维护了Implementor/即它的实现类ConcreteIm原创 2020-09-11 01:12:07 · 87 阅读 · 0 评论 -
适配器模式
介绍适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主要目的是为了兼容性,让原本接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。适配器模式属于结构性主要分为三类:类适配器模式、对象适配器模式、接口适配器模式类适配器:介绍Adapter类,通过继承src类,实现dst接口,完成src->dst的适配应用实例充电器本身相当于Adapter,220V交流电相当于src(被实配者),dst(目标)是5V直流电//被原创 2020-09-10 21:03:20 · 117 阅读 · 0 评论 -
建造者模式
介绍建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的构建细节建造者模式的四个角色Product(产品角色):一个具体的产品对象Builder(抽象建造者):创将一个Product对象的各个部件指定的接口/抽象类ConcreteBuild原创 2020-09-10 00:15:50 · 85 阅读 · 0 评论 -
原型模式
介绍原型模式(Prototype)是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象原型模式是一种创建型设计模式,允许一个对象再创建另一个可定制的对象,无需知道如何创建的细节工作原理是:通过将一个原型对象传给要发动创建的对象,发动创建的对象通过请求原型对象拷贝它们自己来实施创建,即对象.clone()public class Sheep implements Cloneable { //克隆该实例,使用默认的clone方法来完成 @Override protected原创 2020-09-09 23:40:00 · 102 阅读 · 0 评论 -
工厂模式
简单工厂模式简单工厂模式属于创建型模式,是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)早软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使用到工厂模式需求看一个披萨的项目:要便于种类扩展,维护披萨的种类很多 (比如 GreekPizz、CheesePizz 、PepperPizz等)披萨的制作有 prepare、bake、c原创 2020-09-09 21:59:09 · 77 阅读 · 0 评论 -
单例模式
介绍所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象。SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就足够了,这就是使用到了单例模式。单例模式的实现有八种方式:饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线程不安全)懒汉式(线程安原创 2020-09-09 01:12:36 · 215 阅读 · 0 评论 -
Java设计模式
设计模式介绍设计模式是程序员在面对同类软件工问题所总结出来的有用经验,模式不是代码,而某类问题的通用解决方案设计模式( Design pattern) 代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来。设计模式的本质提高软件的维护性,通用和扩展并降低复杂 度。<< 设计模 式>> 是经典的书,作者是 Erich Gamma、Richard Helm、Ralph Ralph和John Vlissides Design(俗称 “四人组 GO原创 2020-09-08 01:09:59 · 137 阅读 · 0 评论