设计模式
文章平均质量分 94
介绍常用的设计模式
白夜行515
世界上有两样东西不能直视:一是太阳,二是人心!
展开
-
设计模式之美
介绍26种设计模式与常用设计原因,教你如何写出高质量的代码原创 2022-04-13 21:11:18 · 995 阅读 · 0 评论 -
【设计模式】建造者模式
1.定义建造者模式(Builder)用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。2.结构2.1 UML类图2.2 角色产品(Product)角色:包含多个组成部件的复杂对象,由具体建造者来创建其各个部件。建造者(Builder)角色:定义生成实例所需要的所有方法;具体的建造者(ConcreteBuilder)...原创 2019-04-23 19:14:59 · 177 阅读 · 0 评论 -
【设计模式】解释器模式
1.定义解释器模式(Interpreter)给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。2.结构2.1 UML类图2.2 角色Context(解释器上下文环境类):用来存储解释器的上下文环境,例如:需要解释的文法等。AbstractExpression(抽象表达式):声明一个抽象的解释操作弗雷,并定义一个抽象的解释方案,其具体的实...原创 2019-04-23 20:34:10 · 154 阅读 · 0 评论 -
【设计模式】命令模式
1.定义命令模式(Command)将一个请求封装为一个对象,从而使可用不同的请求对客户进行参数化,对请求排队或请求记录日志,以及支持可撤销的操作。2.结构2.1 UML类图2.2 角色Command :声明执行命令的接口,拥有执行命令的抽象方法 execute()。Concrete Command 具体实现类:它拥有接收者对象,并通过调用接收者的功能来完成命令要执行的操作。Rec...原创 2019-04-24 15:32:48 · 158 阅读 · 0 评论 -
【设计模式】模板方法模式
1.定义模板方法模式(Template Method)把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。2.结构2.1 UML类图2.2 角色Abstract Class 抽象类的父类:由子类实现的方法,并且在模版方法被调用Concrete Class 具体的实现子类:实现父类所定义的一个或多个抽象方法Template Met...原创 2019-04-25 17:19:27 · 320 阅读 · 0 评论 -
【设计模式】中介者模式
1.定义中介者模式(Mediator)用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示的相互作用,从而使其耦合松散,而且可以独立的改变它们之间的交互。2.结构2.1 UML类图2.2 角色Mediator:抽象中介者,定义了同事对象到中介者对象之间的接口。ConcreteMediator: 具体中介者。实现抽象中介者的方法,它需要知道所有的具体同事类,同时需要从具体的...原创 2019-05-09 15:37:43 · 160 阅读 · 0 评论 -
【设计模式】装饰模式
1.定义装饰模式(Decorator)向一个现有的对象添加新的功能,同时又不改变其结构。就增加功能来说,装饰器模式相比生成子类更为灵活。2.结构2.1 UML类图2.2 角色Component 抽象组件角色:一个抽象接口,是被装饰类和装饰类的父接口Concrete Component 具体组件角色:是抽象组件的实现类Decorator 抽象装饰角色:包含一个组件的引用,并定义了与...原创 2019-05-09 16:14:27 · 179 阅读 · 0 评论 -
【设计模式】状态模式
1.定义状态模式(State)允许通过改变对象的内部状态而改变对象的行为,这个对象就如同修改了它的类2.结构2.1 UML类图2.2 角色Context:用户对象,拥有一个State类型的成员,以标识对象的当前状态。State:接口或抽象类,封装与Context的特定状态相关的行为。ConcreteState:接口实现类或子类,实现了一个与Context某个状态相关的行为。3...原创 2019-05-09 17:32:02 · 186 阅读 · 0 评论 -
【设计模式】组合模式
1.定义组合模式(Composite)组合多个对象形成树形结构以表示“整体-部分”的结构层次。2.结构2.1 UML类图2.2 角色Component(树形结构的节点抽象)为所有对象定义统一的接口(公共属性、行为等的定义);提供管理子节点对象的接口方法;提供管理节点对象的接口方法。Leaf (树形结构的叶节点):Component的实现子类,叶子结点没有子结点。Composite...原创 2019-05-09 19:01:13 · 202 阅读 · 0 评论 -
【设计模式】原型模式
1.定义原型模式(Prototype)采用复制原型对象的方法来创建对象的实例,使得复制后的对象与原型有一样的数据。浅拷贝与深拷贝的定义浅拷贝:使用一个已知实例对新创建实例的成员变量逐个赋值。深拷贝:当一个类的拷贝构造方法,不仅要复制对象的所有非引用成员变量值,还要为引用类型的成员变量创建新的实例,并且初始化为形式参数实例值。若想要深入理解深拷贝和浅拷贝可参考:深拷贝与浅拷贝详解2....原创 2019-05-07 17:19:04 · 208 阅读 · 0 评论 -
【设计模式】责任链模式
1.定义责任链模式(Chain of Responsibility)也称为职责链模式,它使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。即构造一系列分别担当不同的职责的类的对象来共同完成一个任务。2.结构2.1 UML类图2.2 角色Handler 处理类的抽象父类,定义了一个处理请求的方...原创 2019-05-07 18:15:54 · 201 阅读 · 0 评论 -
【设计模式】Spring 中用到的设计模式
一、引入Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行内典范。Spring框架中使用到了大量的设计模式,下面介绍比较有代表性的几种。二、Spring常用的八种设计模式2.1 工厂模式工厂模式通常由应用程序直接使用new创建新的对象,为了将对象的创建和使用相分离,采用工厂模式,即应用程序将对象的创建及初始化职责交给工厂对象。Spring使用工厂模...原创 2019-05-27 16:20:17 · 533 阅读 · 0 评论 -
【设计模式】简单工厂模式
1.定义简单工厂模式又称静态工厂方法模式(Static FactoryMethod)提供了一种创建对象的最佳方式,通过创建一个工厂类来创建其它类的实例。2.结构2.1 UML类图2.2 角色工厂(Creator)角色:实现创建所有实例的内部逻辑,工厂类可以被外界直接调用,创建所需的产品对象。抽象(Product)角色:所有对象的父类,它负责描述所有实例所共有的公共接口。具体产品(...原创 2019-04-23 16:57:11 · 150 阅读 · 0 评论 -
【设计模式】观察者模式
1.定义观察者模式(Observer)定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。2.结构2.1 UML类图2.2 角色Subject(被观察者):被观察的对象,当需要被观察的状态发生变化时,需要通知队列中所有的观察者对象,Subject需要维持(添加。删除、通知)一个观察者对象的队列列表。Concrete Subjec...原创 2019-04-23 15:50:13 · 175 阅读 · 0 评论 -
【设计模式】工厂方法模式
1.定义工厂方法模式(Factory)定义一个创建产品对象的工厂接口,让子类决定实例化哪一个类,使得一个类的实例化延迟到其子类。核心工厂类不再负责产品的创建,它成为了一个抽象工厂角色,仅负责具体工厂子类实现的接口。2.结构2.1 UML类图2.2 角色抽象工厂(Creator)角色:工厂方法模式的核心,任何工厂类都必须实现这个接口。具体工厂(Concrete Creator)角色:...原创 2019-04-23 11:45:28 · 186 阅读 · 0 评论 -
【设计模式】JDK源码中用到的设计模式
引入我是从Stack Overflow上看到的问题,感觉这个答案真心不错,所以翻译过来看看,由于本文水平有限,不喜勿喷,原文链接:Examples of GoF Design Patterns in Java’s core libraries 问题我正在学习GoF Java设计模式,我想看看他们的一些现实生活中的例子。Java核心库中的这些设计模式的一些很好的例子是什么?答案我选择了一个投票数最高翻译 2017-07-31 13:34:11 · 7670 阅读 · 0 评论 -
【设计模式】适配器模式
1.定义Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。2.UML类图分析:模式中的角色目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。需要适配的类(Adaptee):需要适配的类或适配者类。适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。 3.实现方式(1)类的适配器模式(采用继承实现)//原创 2017-07-31 15:30:12 · 297 阅读 · 0 评论 -
【设计模式】单例设计模式
1.单例模式的定义单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。2.单例模式的特点单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。3.单例模式的应用在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一原创 2017-07-31 12:52:25 · 6271 阅读 · 3 评论 -
【设计模式】策略模式
1.定义策略模式(Strategy)对一系列的算法加以封装,为所有的算法定义一个抽象的算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交给客户端决定,从而达到平滑的处理算法间切换的目的。2.结构2.1 UML类图2.2 角色Strategy:策略(算法)抽象ConcreteStrategy:各种策略(算法)的具体实现Context:策略的外部封装类(容...原创 2019-02-21 17:40:17 · 184 阅读 · 0 评论 -
【设计模式】备忘录模式
1.定义备忘录模式(Memento)保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。2.结构2.1 UML类图2.2 角色Originator(原生者):需要被保存状态以便恢复的对象Memento(备忘录):该对象由Originator创建,用来保存Originator的内部状态Caretaker(管理者):负责在适当的时间保存或恢复Origi...原创 2019-02-19 15:49:54 · 293 阅读 · 0 评论 -
【设计模式】抽象工厂模式
1.定义抽象工厂模式(Abstract Factory)提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。即向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象2.结构2.1 UML类图抽象工厂模式2.2 角色抽象工厂(Creator)角色:抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。抽象(...原创 2019-03-05 11:41:36 · 197 阅读 · 1 评论 -
【设计模式】桥接模式
1.定义桥接模式(Bridge)将抽象部分与它的实现部分分离,从而保持各部分的独立性以及应对它们的功能扩展。2.结构2.1 UML类图2.2 角色Abstraction 抽象类或接口维护对行为实现的引用Refined Abstraction:抽象化角色的子类,实现父类中的业务方法,并通过组合/聚合关系调用实现角色中的业务方法。Implementor:定义实现化角色的接口,定义实现...原创 2019-04-25 19:51:28 · 152 阅读 · 0 评论 -
【设计模式】外观模式
1.定义外观模式(Facade)为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得子系统或类库方便使用。2.结构2.1 UML类图2.2 角色Facade :调用方法定义简单的调用接口,它被客户角色调用,熟悉子系统的功能。SubSystem 功能提供者:提供功能的类群(模块或子系统)Clients 调用者:通过Facade接口调用提供某功能的内部类群...原创 2019-04-25 20:51:10 · 168 阅读 · 0 评论 -
【设计模式】享元模式
1.定义享元模式(Flyweight)通过与其他类似对象共享数据来减小内存占用。享元模式的两种状态:内部状态:不会随着环境的改变而改变的可共享部分;外部状态:会随环境改变而改变的不可共享的部分。2.结构2.1 UML类图2.2 角色Flyweight 抽象享元角色:所有具体享元类的父类,规定一些需要实现的公共接口ConcreteFlyweight 具体享元角色...原创 2019-04-26 16:20:35 · 167 阅读 · 0 评论 -
【设计模式】代理模式
1.定义代理模式(Proxy)为其他对象提供一种代理,从而控制对这个对象的访问。代理:指具体与代理元(被代理对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特殊的处理。2.结构2.1 UML类图2.2 角色Subject(抽象角色):真实主题与代理主题的共同接口Realsubject(真实角色):定义了代理角色所代表的...原创 2019-04-22 19:04:39 · 197 阅读 · 0 评论 -
【设计模式】迭代器模式
1.定义迭代器模式(Iterator)将容器中包含的内部对象的访问委让给外部类,按顺序进行遍历访问,即可顺序访问集合对象元素,而不暴露该对象的底层细节。2.结构2.1 UML类图2.2 角色Iterator(迭代器接口):该接口必须定义实现迭代功能的最小定义方法集,例如提供hasNext()和next()方法Concrete Iterator (迭代器实现类):迭代器接口的实现类,...原创 2019-04-22 20:04:57 · 141 阅读 · 0 评论 -
【设计模式】访问者模式
1.定义访问者模式(Visitor)表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。将数据结构与数据操作分离。2.结构2.1 UML类图2.2 角色访问者角色(Visitor):为该对象结构中具体元素角色声明了一个访问操作接口,该操作接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色,这样访问者就可以通过该元素角色的...原创 2019-04-22 21:19:58 · 152 阅读 · 0 评论 -
【设计模式入门】设计模式概述
设计模式的定义设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。为什么使用设计模式呢?主要是为了代码复用,增加可维护性。设计模式的六大原原创 2017-07-31 11:17:30 · 422 阅读 · 0 评论