5 ClarenceZero

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 25w+

SpringDoc阅读(Chapter1)-Spring IoC容器

SpringDoc阅读之Chapter1-Spring IoC容器1.1 Spring IoC 容器、Beans相关介绍IoC is also known as dependency injection (DI). It is a process whereby objects define their dependencies (that is, the other objects they work with) only through constructor arguments, argume

2020-07-23 10:16:22

Spring源码阅读之循环依赖

一、前言Spring循环依赖是面试考点之一。面试官可以深挖面试者对Spring关于Bean的生命周期掌握情况。Spring循环依赖也是Spring难点之一,逻辑比较绕,需要对Spring Bean的生命周期了如指掌。二、什么是循环依赖?简单,就是A对象依赖了B对象,B对象依赖了A对象。@Componentpublic class A { @Autowired B b;}@Componentpublic class B { @Autowired A a;}三、Spring是如

2020-07-10 20:11:03

2020年7月2日 记

2020年7月2日 记之前定的半个月看完设计模式已经完成了,实际用时一个月的时间,最后剩下的是一点收尾工作(笔记整理以及加入个人思考)。整个文章大量借鉴书籍Head First 设计模式、图解设计模式、及王争的设计模式之美。接下来需要做的是不断思考与总结,集设计思想之大成并运用到工作中去。最初的想法是一步一步完善个人的基础知识,包含软件设计及硬件结构,以及让人色变的算法。我也相信,只要坚持做对的事情,一步一个脚印,当3年5年你会发现,你已经领先别人不止一点半点。接下来的学习任务计划用3个月的时间通读S

2020-07-02 10:47:51

组合模式

组合模式定义将一组对象组织(Compose)成树形结构,以表示一种“部分 - 整体”的层次结构。组合让客户端(在很多设计模式书籍中,“客户端”代指代码的使用者。)可以统一单个对象和组合对象的处理逻辑。组合模式允许你将对象组合成树形结构来表现整体/部分 层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。组合模式是一种结构型设计模式, 你可以使用它将对象组合成树状结构, 并且能像使用独立对象一样使用它们。类图总结组合模式的设计思路,与其说是一种设计模式,倒不如说是对业务场

2020-06-29 10:30:36

享元模式

享元模式定义所谓享元,顾名思义就是被共享的单元。享元模式的意图是复用对象,节省内存,前提是享元对象是不可变对象。在内存中只保留一份实例,供多处代码引用。实现1. 定义享元类/** * 享元类 * 这里定义的字段都是可以复用的 */public class ChessPieceUnit { private int id; private String text; private Color color; public ChessPieceUnit(int

2020-06-29 10:15:24

解释器模式

解释器模式解释器模式更加小众,只在一些特定的领域会被用到,比如编译器、规则引擎、正则表达式。它的代码实现的核心思想,就是将语法解析的工作拆分到各个小类中,以此来避免大而全的解析类。一般的做法是,将语法规则拆分成一些小的独立的单元,然后对每个单元进行解析,最终合并为对整个语法规则的解析。定义解释器模式为某个语言定义它的语法(或者叫文法)表示,并定义一个解释器用来处理这个语法。实现基于解析器模式的自定义告警规则功能。1. 定义表达式接口/** * 定义表达式解析模板 */public i

2020-06-29 09:40:31

备忘录模式

备忘录模式定义在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象为先前的状态。这个模式的定义主要表达了两部分内容。一部分是,存储副本以便后期恢复。这一部分很好理解。另一部分是,要在不违背封装原则的前提下,进行对象的备份和恢复。模式建议将对象状态的副本存储在一个名为备忘录 (Memento) 的特殊对象中。 除了创建备忘录的对象外, 任何对象都不能访问备忘录的内容。 其他对象必须使用受限接口与备忘录进行交互, 它们可以获取快照的元数据 (创建时间和操作名

2020-06-29 08:42:41

访问者模式

访问者模式由于它难理解、难实现。应用它会导致代码的可读性、可维护性变差,所以在开发中很少被用到。定义允许一个或者多个操作应用到一组对象上,解耦操作和对象本身。类图实现1. 定义Visitorpublic interface Visitor { void visit(PdfFile pdfFile); void visit(WordFile wordFile);}2. 定义Visitor实现类public class Compressor implements

2020-06-28 20:05:24

中介者模式

中介者模式定义中介模式定义了一个单独的(中介)对象,来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互,来避免对象之间的直接交互。如航空管制。为了让飞机在飞行的时候不互相干扰,需要时刻与其他飞机进行通信。这时,我们引入塔台这样一个中介,让每架飞机只根塔台来通信,发送自己位置给塔台,由塔台来负责每回飞机的航线调度,这样就大大简化了通信网络。类图总结中介模式也是为了解耦对象之间的交互,所有的参与者都只与中介进行交互。而观察者模式中的消息队列,就有点类似中介模式中的“中介”,

2020-06-28 18:42:42

桥接模式

桥接模式定义桥接模式是一种结构型设计模式, 可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构, 从而能在开发时分别使用。将抽象和实现解耦,让它们可以独立变化。一个类存在两个(或多个)独立变化的维度,我们通过组合的方式,让这两个(或多个)维度可以独立进行扩展。JDBC是桥接模式典型应用。类图实现抽象对象控制程序的外观, 并将真实工作委派给连入的实现对象。 不同的实现只要遵循相同的接口就可以互换, 使同一 GUI 可在 Windows 和 Linux 下运行。

2020-06-28 12:49:42

原型模式

原型模式定义如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同),在这种情况下,我们可以利用对已有对象(原型)进行复制(或者叫拷贝)的方式来创建新对象,以达到节省创建时间的目的。这种基于原型来创建对象的方式就叫作原型设计模式(Prototype Design Pattern),简称原型模式。类图实现1. 浅拷贝@Datapublic class SearchWords implements Cloneable{ String keyWorld;

2020-06-28 12:23:57

职责链模式

职责链模式定义将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止。多个处理器依次处理同一个请求。一个请求先经过A处理器处理,然后再把请求传递给B处理器,B处理完后传递给C,以此类推,形成一个链条。链条上的每个处理器各自承担各自的处理职责。职责链模式实现有多种。类图实现实现一个敏感词过滤。1. 定义过滤算法接口public interface SensitiveWordFilter {

2020-06-23 21:00:24

建造者模式

建造者模式定义建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。实现public class ResourcePoolConfig { private String name; private int maxTotal; private int maxIdle; p

2020-06-23 19:29:14

代理模式

代理模式定义代理模式为另一个对象提供一个替身或占位符以控制对这个对象访问。代理模式(英语:Proxy Pattern)是程序设计中的一种设计模式。所谓的代理者是指一个类别可以作为其它东西的接口。代理者可以作任何东西的接口:网络连接、存储器中的大对象、文件或其它昂贵或无法复制的资源。著名的代理模式例子为引用计数(英语:reference counting)指针对象。当一个复杂对象的多份副本须存在时,代理模式可以结合享元模式以减少存储器用量。典型作法是创建一个复杂对象及多个代理者,每个代理者会

2020-06-23 09:16:44

状态模式

状态模式定义有限状态机状态存储关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。转移指示状态变更,并且用必须满足确使转移发生的条件来描述它。动作是在给定时刻要进行的活动的描述。有多种类型的动作:进入动作(entry action):在进入状态时进行退出动作(exit action):在退出状态时进行输入动作:依赖于当前状态和输入条件进行转移动作:在进行特定转移时进行FSM(有限状态机)可以使用上面图1那样的状态图(或状态转移图)来表示。此外可以使用多种类型的状态转移表。下面

2020-06-21 16:21:58

命令模式

命令模式定义命令模式将请求封装成对象,以便使用不同的请求、队列或日志来参数化其他对象。命令模式也支持可撤销的操作。一个命令对象通过在特定接收者上绑定一组动作来封装一个请求。要达到这一点,命令对象将动作和接收者包进对象。这个对象只暴露出一个execute()方法,当此方法被调用的时候,接收者就会进行这些动作。从外面看,其他对象不知道空间哪个接收者进行了哪些动作,只知道如果调用了execute()方法,请求的目的就能达到。类图实现1. 定义Command接口/** * 命令定义 */pu

2020-06-20 19:03:47

迭代器模式

迭代器模式定义迭代器模式Iterator Design Pattern也叫游标模式Cursor Design Pattern。用来遍历集合对象(如数组、链表、树、图、跳表)。迭代器模式将集合对象的遍历操作从集合类中拆分出来,让两者的职责更加单一。迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露其内部的表示。类图实现1. 定义迭代器接口public interface MyIterator<E> { /** * 判断是否有下一个元素

2020-06-19 09:32:28

模板方法

模板方法定义模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。(引用GoF 设计模式)类图实现1. 定义抽象类package template;/** * 抽象类: 作为基类,其子类必须实现抽象方法 */public abstract class CaffeineBeverage { /** * 整个流程处理 * 声明为final以免子类改变这个算法的

2020-06-18 08:51:43

门面模式(外观模式)

门面模式(外观模式)定义将一个或数个类的复杂的一切都隐藏在背后,只显露一个干净美好的门面(外观)。门面没有封装子系统的类,门面只提供简化的接口。所以客户觉得有必要,依然可以直接使用子系统的类。创建一个接口简化而统一的类,用来包装子系统中的一个或多个复杂的类。门面模式为子系统提供了一组统一的接口,定义一组高层接口让子系统更易用。类图总结解决易用性问题。外观模式可以用来封装系统的底层实现,隐藏系统的复杂性,提供一组更加简单易用、更高层的接口。如Linux是对内核的封装。Shell命令

2020-06-17 20:58:33

适配器模式

适配器模式定义在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。适配器模式主要应用于,当接口里定义的方法无法满足客户的需求,或者说接口里定义的方法的名称或者方法界面与客户需求有冲突的情况。(引用百度百科)适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。一个适配使得因接

2020-06-16 12:22:00

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。