生活中的工厂模式

1、您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。

2、玩具店里需要一些坦克玩具,就需要从玩具厂商那边进货,不需要知道这些坦克玩具的制造过程。

工厂方法模式

工厂方法模式定义了一个创建对象的接口(创建一个对象),但是由子类决定要实例化哪个类。工厂方法让类把实例化推迟到子类

工厂方法模式的类图如下。(下图来自于《Head First 设计模式》)

工厂方法模式

>
Java设计模式

何为策略模式

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。

策略模式的 UML 类图如下。

>
Java设计模式

介绍

在微服务项目中,各个功能模块拆分成了一个个微服务,每一个微服务都拥有自己的 ip 和端口。随着微服务逐渐增多时,客户端要去访问不同的服务,就要记住每个服务的 ip 和端口号,这在开发时简直就是灾难性的,混乱的。最终导致访问的入口不统一。

为了解决上面的问题,我们需要将客户端访问入口进行统一,于是 Spring Cloud Gateway 就出现了。

>
JavaSpring Cloud Alibaba微服务

ts 中的类通过 class 关键字创建。

class Person {
    age: number
    gender = '男'
}

使用构造函数 constructor 初始化属性。

class Person2 {
    age: number
    gender: string

    // 实例属性初始化
    constructor(age: number, gender: string) {
        this.age = age
        this.gender = gender
    }
}

const p1 = new Person2(12, '男')
console.log(p1);
TypeScript

安装

安装 typescript 编译器

> npm i -g typescript

安装 ts-node 和 ts-lib,使用 ts-node 可以直接运行 ts 文件,期间也不会产生 js 文件

> npm i -g ts-node
> npm i -g tslib @types/node
TypeScript

JWT 构成

JWT 是一个很长的字符串,看起来如下所示,中间用“.”隔开分为三部分。

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJjdXN0b20gc3ViamVjdCIsImlzcyI6InpoYW5nc2FuIiwiYXVkIjoibm9ybWFsIHVzZXIiLCJuYmYiOjE2NjYxNzAwMjEsImlhdCI6MTY2NjE2OTk5MSwiZXhwIjoxNjY2MTcwMDUxfQ.QgGH1zo4FXOmG4mIrZDRQ-KaROgLEuKjlL78bGSRg0U

其中分为三部分为“Header”、“Payload”、“Signature”。

JavaJWT后端

MongoDB 相关概念

MongoDB 中基本的概念是文档、集合、数据库。

数据库

MongoDB 的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。

文档

文档类似于 MySQL 中的一条记录(row),其大小不能超过 16M。文档内的属性不能包含 null 字符,句点(.),美元符号($),不能以 system 开头。

文档的存储是以 JSON 的形式保存,在 MongoDB 中以 BSON(二进制的 JSON)的形式存储着。

>
MongoDB

单例设计模式的目的就是让对象只创建一次,比如在 JDK 中的 Runtime 类默认的创建方式就是使用单例模式。同时数据库连接池、线程池等等一些重量级的对象只需要创建一次随处使用即可。

单例设计模式共有 7 种创建的方式。单例的主要特点就是构造方法是私有化的。

>
Java设计模式