- Header : 토큰의 타입, 암호화 알고리즘을 담고 있습니다.
- Payload : 토큰의 정보를 담는 부분입니다.
- Signiture : 토큰의 신뢰성 보장, 전자서명이 담겨 있습니다.
- 대칭키를 공유하는 방식보다는 비교적 안전하지만 연산 성능이 떨어지는 편입니다.
- 이 방식은 비밀키가 노출되면 큰 문제가 생길 수 있으며, 연산 성능은 상대적으로 빠릅니다.
public class Singleton {
private Singleton() {}
private static Singleton singleton = null;
public static Singleton getInstance () {
if(singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
- 클래스의 인스턴스가 하나만 있도록 하고, 해당 인스턴스에 대한 전역 접근 지점을 제공하기 때문이다.
- 메소드가 실행될 때 모드도 전환(변경)되는 패턴
- 예시
- 인터페이스 생성, 해당 인터페이스를 여러 개로 구현, 다형성을 이용해 서로 교환 가능하게 구현 가능
Interface x = new InterfaceImpl1();
Interface x = new InterfaceImpl2();
- 예시
- 추상 클래스에 여러 추상 메소드 1,2,3 선언, 내부에 1,2,3 합친 메소드 A 선언
- 해당 추상 클래스를 실제로 다른 패키지에서 구현하여 작동하게 한다.
- 메소드 A를 실행하면 1,2,3 단계 별로 실행되며, 추가적인 로직이 있으면 간단히 추가할 수 있다.
- 클린 코드(Clean Code)의 저자 Robert C.Martin은 함수형 프로그래밍을 대입문이 없는 프로그래밍이라고 정의하였다.
어떻게
할 것인가에 주목하고무엇을
할 것인가에 주목한다.
- 변수나 데이터 구조 안에 담을 수 있다.
- 파라미터로 전달할 수 있다.
- 반환값으로 사용할 수 있다.
- 할당에 사용된 이름과 관계없이 고유한 구별이 가능하다.
- 동적으로 프로퍼티 할당이 가능하다.
- 함수를 인자로써 전달할 수 있어야 한다.
- 함수의 반환값으로 또 다른 함수를 사용할 수 있다.
Reference: