
设计模式
文章平均质量分 82
to_real
这个作者很懒,什么都没留下…
展开
-
Java设计模式之《模板模式》
1. 模板设计模式在书中定义: 定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。 通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。2. 如下网上找到的一个模板模式的类图: 抽象父类(AbstractClass):实现了模板方法,定义了算法的骨架。.转载 2022-02-14 16:11:23 · 234 阅读 · 0 评论 -
Java设计模式之《命令模式》
一、命令模式介绍命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志。以及支持可撤销的操作。说白了,就是将一系列的请求命令封装起来,不直接调用真正执行者的方法,这样比较好扩展。命令模式UML图:Command(抽象命令类):抽象出命令对象,可以根据不同的命令类型。写出不同的实现类ConcreteCommand(具体命令类):实现了抽象命令对象的具体实现Invoker(调用者/请求者):请求的发送者,它通过命令对象来执行请求。一个调用转载 2022-02-14 16:02:25 · 140 阅读 · 0 评论 -
Java设计模式之《组合模式》
一、什么是组合模式 在Swing中,容器Container和组件如Button、JLabel等等之间的关系就是组合关系,一个容器中有多个组件,组合模式更形象的说就是一棵树,描述的时部分-整体的关系。 组合模式(Composite),将对象组合成树形结构以表示“部分-整体”的层次结构,用户对单个对象和组合对象的使用具有一致性。 所以当我们的案例是树形结构或者是部分-整体的关系时,就可以考虑使用组合模式。 组合模式有两种不同的实现,分别为透明模式和安全模式,下面将详细说明一下两种实现的区转载 2022-02-14 15:43:16 · 503 阅读 · 0 评论 -
Java设计模式之《原型模式》
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型:创建类模式类图:原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。在java虚拟机中,只有实现了这个接口的类才可以被拷贝,否则在运行时会抛出CloneNotSupportedException转载 2022-02-14 14:41:49 · 142 阅读 · 0 评论 -
Java设计模式之《模板模式》
模板模式,顾名思义,就是通过模板拓印的方式。 定义模板,就是定义框架、结构、原型。定义一个我们共同遵守的约定。 定义了模板,我们的剩余工作就是对其进行充实、丰润,完善它的不足之处。 定义模板采用抽象类来定义,公共的结构化逻辑需要在抽象类中完成,只将非公共的部分逻辑抽象成抽象方法,留待子类充实实现。 所以上文所述不足之处就是这些抽象方法。 总的来说,模板模式就是通过抽象类来定义一个逻辑模板,逻辑框架、逻辑原型,然后将无法决定的部分抽象成抽象类交由子类来实现,一般这些抽象类的调用逻转载 2022-02-14 10:51:12 · 246 阅读 · 0 评论 -
Java设计模式之《构建者模式》
构建者模式,又称建造者模式,将一部负责对象的构建分为许多小对象的构建,最后在整合构建的模式。 构建者模式一般用在构建流程或者组成部件固定的场合,将这些部件分开构建成为组件对象,再将这些组件对象整合成为目标对象。 最佳实例就是组装台式电脑的情况,我们可以分别购买主板、CPU、内存、硬盘等部件,然后将这些部件组装在一起就形成了一台完整的电脑。 参照如下类图可以比较明显了了解编码如何实现构建者模式: 成员分析: Director:控制者类,这是控制整个组合过程,在这个转载 2022-02-12 15:22:32 · 347 阅读 · 0 评论 -
Java设计模式之《职责链模式》
职责链模式(称责任链模式)将请求的处理对象像一条长链一般组合起来,形成一条对象链。请求并不知道具体执行请求的对象是哪一个,这样就实现了请求与处理对象之间的解耦。 生活中这种情况其实很常见,公司部门之中,政府部门之中都有体现,在公司部门中,当你提交一份请求文件给你的直接上级时,你的直接上级可以处理这个文件,若他觉得自己不够资格,会将文件传递为他的直接上级,这样文件请求在这条链中传递,直到被某位感觉自己足够资格处理文件的人给处理掉为止,在政府部门也是如此。 职责链模式需要一个总接口,用来定义处理对象转载 2022-02-12 14:48:58 · 527 阅读 · 0 评论 -
Java设计模式之《调停者模式》
调停者模式。 我们想象一下这样的场景:一个系统内部通过许多的类互相之间相互调用来完成一系列的功能,这个系统内部的每个类都会存在至少一次的调用与被调用,多者数不胜数,这种情况下,一旦某个类发生问题,进行修改,无疑会影响到所有调用它的类,甚至它调用的类,可见这种情况下,类与类之间的耦合性极高(体现为太多的复杂的直接引用)。 这正是调停者模式的主场,调停者犹如第三方中介一般,将所有的类与类之间的引用都导向调停者类,所有类的请求,一致发向调停者,由调停者再发向目标类,这样原本复杂的网状的类关系,变成了简转载 2022-02-12 11:22:44 · 337 阅读 · 0 评论 -
Java设计模式之《抽象工厂模式》
一、概述抽象工厂模式是对工厂方法模式的再升级,但是二者面对的场景稍显差别。工厂方法模式面对的目标一般都是单类的,就比如《ava设计模式之《工厂方法模式》及使用场景》中所举的例子,目标就是桌子这一类商品。如果是这样的呢:生产的是桌椅组合,目标的一套商品,每一套商品中的每类商品的种类的不同的,不同的组合形成不同的套装。这种情况下,就需要使用抽象工厂模式二、实例我们还以家具为例:桌子接口:Desk/** * 桌子接口 */public interface Desk {转载 2022-02-12 10:29:39 · 137 阅读 · 0 评论 -
Java设计模式之《工厂方法模式》
一、概述工厂,就是生产产品的地方。在Java设计模式中使用工厂的概念,那就是生成对象的地方了。本来直接就能创建的对象为何要增加一个工厂类呢?这就需要了解工厂方法要解决的是什么问题了,如果只有一个类,我们直接new一个对象完事,这是最简单的;但是如果有多个类呢,而且这些类还需要针对不同的情况来创建不同的对象,这时候就需要工厂了,我们可以在工厂中根据条件来创建具体的对象。这样一来就将调用方和具体的目标类进行了解耦,调用方根本就不知道需要创建那个对象,它只是提出了条件,然后工厂就可以根据给定的转载 2022-02-12 10:28:26 · 158 阅读 · 0 评论 -
Java设计模式之《外观模式》
1、外观模式简介 外观模式,一般用在子系统与访问之间,用于对访问屏蔽复杂的子系统调用,采用耳目一新的外观类提供的简单的调用方法,具体的实现由外观类去子系统调用。 外观模式任然是一种中间件类型的模式,使用外观模式之后子系统的方法调用并非完全屏蔽,只是为访问者提供了一种更佳的访问方式,如果你不嫌麻烦,任然可以直接进行子系统方法调用。 甚至于在子系统与子系统之间进行调用时也可以通过各自的外观类来进行调用,这样代码方便管理。 下面请看代码实例:更能显示这种情况子系统方法11 pub转载 2022-02-11 17:12:02 · 108 阅读 · 0 评论 -
Java设计模式之《桥接模式》
这里摘抄一份他处的概念,你可以不必理会,先看下面得讲解与实例,然后返回来理解概念,不然抽象的概念会让你崩溃... 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 个人理解:桥接是一个接口,它与一方应该是绑定的,也就是解耦的双方中的一方必然是继承这个接口的,这一方就是实转载 2022-02-11 16:42:02 · 201 阅读 · 0 评论 -
Java设计模式之《观察者模式》
观察者模式,又可以称之为发布-订阅模式,观察者,顾名思义,就是一个监听者,类似监听器的存在,一旦被观察/监听的目标发生的情况,就会被监听者发现,这么想来目标发生情况到观察者知道情况,其实是由目标将情况发送到观察者的。 观察者模式多用于实现订阅功能的场景,例如微博的订阅,当我们订阅了某个人的微博账号,当这个人发布了新的消息,就会通知我们。 现在我们举一个类似的情况,并使用代码来实现,为大家提供一个比较明显的认识。 警察在找到嫌犯的时候,为了找到幕后主使,一般都会蹲点监察,这里我有三名便衣警察转载 2022-02-11 16:21:30 · 207 阅读 · 0 评论 -
Java设计模式之《享元模式》
享元模式:“享”就是分享之意,指一物被众人共享,而这也正是该模式的终旨所在。 享元模式有点类似于单例模式,都是只生成一个对象来被共享使用。这里有个问题,那就是对共享对象的修改,为了避免出现这种情况,我们将这些对象的公共部分,或者说是不变化的部分抽取出来形成一个对象。这个对象就可以避免到修改的问题。 享元的目的是为了减少不会要额内存消耗,将多个对同一对象的访问集中起来,不必为每个访问者创建一个单独的对象,以此来降低内存的消耗。 下面我们来看一个简单的例子:建筑接口:JianZhu1转载 2022-02-11 15:50:17 · 188 阅读 · 0 评论 -
Java设计模式之《代理模式》
代理模式算是我接触较早的模式,代理就是中介,中间人。法律上也有代理,比如代理律师之类,委托人将自己的一部分权限委托给代理者,代理者就拥有被代理者(委托人)的部分权限,并且可以以被代理人的名义来实行这些权限,此时代理者与委托人等同,当然代理人也可以在实行权限时配合自己的能力来进行,当然不能超出这个权限。 Java中的代理模式类似于上面的代理,我们也是为一个类(委托类)创建一个代理类,来代表它来对外提供功能。 如何在Java中创建一个类的代理类呢? 很简单,我们需要创建一个公共接口,委托类要实转载 2022-02-11 15:32:21 · 196 阅读 · 0 评论 -
Java设计模式之《装饰器模式》
一、概述装饰器模式作用是针对目标方法进行增强,提供新的功能或者额外的功能。不同于适配器模式和桥接模式,装饰器模式涉及的是单方,和代理模式相同,而且目标必须是抽象的。而实际上,装饰器模式和代理模式的实现方式基本一致,只在目标的存在上有些差别,这个后面我们具体讲述。二、初步分析上面提到了两点:涉及的是单方 目标是抽象的我们来想一下,所谓单方主要指的是在整个装饰器模式中不存在双方调用,要解决的也不是双方调用的问题,而是解决单方提供对外服务的问题,这个单方在自行对外提供服务时,功能不足,转载 2022-02-11 15:05:45 · 623 阅读 · 0 评论 -
Java设计模式之《适配器模式》
适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单点理解就是平常所见的转接头,转换器之类的存在。 适配器模式有两种:类适配器、对象适配器、接口适配器 前二者在实现上有些许区别,作用一样,第三个接口适配器差别较大。1、类适配器模式: 原理:通过继承来实现适配器功能。 当我们要访问的接口A中没有我们想要的方法 ,却在另一个接口B中发现了合适的方法,我们又不能改变访问接口A,在这种情况下,我们可以定义一个适配器p来进行中转,这个适配器p要实现我们访转载 2022-02-11 14:45:08 · 1401 阅读 · 0 评论 -
图解java设计模式_08_依赖倒转原则
依赖倒转的中心思想是面向接口编程原创 2020-08-05 13:27:10 · 135 阅读 · 0 评论 -
图解java设计模式_07_接口隔离原则
package com.atguigu.principle.segregation;public class Segregation1 { public static void main(String[] args) { // TODO Auto-generated method stub }}//接口interface Interface1 { void operation1(); void operation2(); void operation3(); vo...原创 2020-07-26 13:27:48 · 108 阅读 · 0 评论 -
图解java设计模式_06_单一职责原则
package com.atguigu.principle.singleresponsibility;public class SingleResponsibility1 { public static void main(String[] args) { // TODO Auto-generated method stub Vehicle vehicle = new Vehicle(); vehicle.run("摩托车"); vehicle.run("汽车"); vehi...原创 2020-07-26 12:16:55 · 243 阅读 · 1 评论 -
图解java设计模式_05_七大设计原则介绍
设计模式目的代码重用性:相同的代码,不用多次编写代码可读性:编码规范性,便于其他程序员的阅读和理解代码可拓展性:当需要增加新的功能时,非常的方便,也称为可维护性代码可靠性:增加新功能时,对原功能没有影响程序高内聚,低耦合设计模式原则...原创 2020-07-26 11:51:19 · 117 阅读 · 0 评论 -
图解java设计模式_03
面向对象(00)=> 功能模块 [设计模式+算法(数据结构)]=>框架[使用到多种设计模式]=>架构[服务器集群]原创 2020-07-26 11:29:44 · 146 阅读 · 0 评论 -
图解java设计模式_01,02
UML类图: 表示对象与对象之间的关系(依赖,聚合。。。。。)浅拷贝(shallowCopy)只是增加了一个指针指向已存在的内存地址。深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存。使用深拷贝的情况下,释放内存的时候不会因为出现浅拷贝时释放同一个内存的错误。...原创 2020-07-25 12:59:51 · 171 阅读 · 0 评论