Jone Sun's Blog

用心发现,这个星球很美!

0%

前言

方式一: Spring Boot Actuator + Micrometer + Prometheus + Grafana

方式二: Spring Boot Actuator + Spring Boot Admin

阅读全文 »

前言

javafx.beans.property包提供了丰富的Property类用于对java对象中的属性和javaFX UI控件进行绑定,可达到:

  • 在任意位置修改java对象的值时可实时更新绑定的UI控件的显示,无需手动编写更新方法
  • javaFX UI控件进行变化时(如用户输入内容),实时写入对应的java对象中,无需手动设置
java属性 javaFx对应Property 绑定构建类
int IntegerProperty JavaBeanIntegerPropertyBuilder
Integer ObjectProperty<Integer> JavaBeanObjectPropertyBuilder
long LongProperty JavaBeanLongPropertyBuilder
Long ObjectProperty<Long> JavaBeanObjectPropertyBuilder
String StringProperty JavaBeanStringPropertyBuilder

需要注意的是,如果java对象中的属性为基本数据类型的包装类,则不能直接使用对应的Property,需使用ObjectProperty, 否则在属性值为null时会报空指针异常(原因是其内部都是使用基本数据类型转换的,感兴趣可以看看源码中的实现)

阅读全文 »

前言

单例模式Singleton: 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。

单例模式的要点有三个:

  • 一是某个类只能有一个实例

  • 二是它必须自行创建这个实例

  • 三是它必须自行向整个系统提供这个实例

    阅读全文 »

前言

建造者模式(Builder): 将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象

阅读全文 »

前言

解释器模式(Interpreter): 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子

解释器模式是一种针对特定问题设计的一种解决方案, 一般主要应用在OOP开发中的编译器的开发中

java中正则表达式以及SQL中SQL语句的具体实现就是解析器模式的典型体现:

  • 把正则表达式解析为语法树,然后再匹配指定的字符串,就需要一个解释器
  • 当我们使用JDBC时,执行的SQL语句虽然是字符串,但最终需要数据库服务器的SQL解释器来把SQL“翻译”成数据库服务器能执行的代码,这个执行引擎也非常复杂,但对于使用者来说,仅仅需要写出SQL字符串即可
阅读全文 »

前言

中介者模式(Mediator): 用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

中介模式是通过引入一个中介对象,把多边关系变成多个双边关系,从而简化系统组件的交互耦合度。

中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。如果使用中介者模式,只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行,这有点像spring容器的作用。

Mediator模式经常用在有众多交互组件的UI上。为了简化UI程序,MVC模式以及MVVM模式都可以看作是Mediator模式的扩展。

  • 各个UI组件互不引用,这样就减少了组件之间的耦合关系;

  • Mediator用于当一个组件发生状态变化时,根据当前所有组件的状态决定更新某些组件;

  • 如果新增一个UI组件,我们只需要修改Mediator更新状态的逻辑,现有的其他UI组件代码不变。

    阅读全文 »

前言

访问者模式(Visitor)是为了抽象出作用于一组复杂对象的操作,并且后续可以新增操作而不必对现有的对象结构做任何改动

访问者模式的核心思想是为了访问比较复杂的数据结构,不去改变数据结构,而是把对数据的操作抽象出来,在“访问”的过程中以回调形式在访问者中处理操作逻辑。如果要新增一组操作,那么只需要增加一个新的访问者。

访问者模式适用于数据结构相对稳定的系统,把数据结构和算法解耦

Java标准库提供的Files.walkFileTree()就实现了一个访问者模式

对XML的SAX处理也是一个访问者模式,我们需要提供一个SAX Handler作为访问者处理XML的各个节点

阅读全文 »

前言

状态模式(State): 当对象的状态改变时,同时改变其行为,设计思想是把不同状态的逻辑分离到不同的状态类中,从而使得增加新状态更容易;

状态模式的实现关键在于状态转换。简单的状态转换可以直接由调用方指定,复杂的状态转换可以在内部根据条件触发完成。

状态模式经常用在带有状态的对象

阅读全文 »

前言

备忘录模式(Memento): 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

标准的备忘录模式有这么几种角色:

  • Memonto:备忘录类,备份原始类中的信息
  • Originator:原始类
  • Caretaker:存储备忘录的类

备忘录模式是为了保存对象的内部状态,并在将来恢复,大多数软件提供的保存、打开,以及编辑过程中的Undo、Redo都是备忘录模式的应用。

阅读全文 »