<싱글톤 패턴 규칙>1\. 인스턴스를 오직하나만 만들며, new 사용 x2\. 그 인스턴스에 글로벌하게 접근할수 있는 방법을 제공해야함New 를사용하면 안됌=>private 생성자. (아무데서나 막 호출하면 안돼니까)글로벌 접근 => static 메서드 안
어떤 인스턴스를 만들지는 서브 클래스가 정한다.확장에는 열려있고 변경에는 닫혀있는 구조로 만들어보자저번에 Refactoring에서 했던 방식과 매우 흡사함예제는 ship을 만드는 공장이 있고 점점 확장해 나가는 예제이다.ship을 만드는 과정의 코드들이 한곳에 다 모여
빌더패턴란 동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법 (복잡한) 객체를 만드는 프로세스를 독립적으로 분리할 수 있다. 빌더패턴 클래스에서 필드들이 많으면 인스턴스를 생서할때나 생성자를 좀 더 다양하게 만들때 코드들이 복잡해지는 문제가 발생한다.
기존 코드를 adapter이란것을 통해 클라이언트가 사용하는 인터페이스의 구현체로 바꿔주는 패턴클라이언트가 사용하는 인터페이스를 따르지 않는 기존 코드를 재사용할수 있게 도와줌security 패키지가 제공하는 UserDetails 인터페이스와 어플리케이션에 따라 달라지
그룹 전체와 개별 객체를 동일하게 처리할 수 있는 패턴컴포넌트들의 공통된 인터페이스를 만들어주고 클라이언트는 이 인터페이스만 본다.여기서 가장 큰 문제점은 클라이언트 부분에서 너무 많은 정보를 알아야하며 메서드의 위치도 잘못됐다. 이러한 문제점을 해결하기 위해 컴포짓
추상적인 것과 구체적인 것을 분리하여 연결하는 패턴 코드에 대한 자세한 설명은 생략 하겠다. 중요한 포인트는 여기서 더 확장시키려고 한다면 똑같이 Champion을 구현하고 똑같은 방식으로 만들것이 분명하다.중복된 코드도 많이 발생=> 하나의 구현체로 다양한 표현을 하