Gof 6

어댑터 패턴

어댑터 패턴 기존 코드를 클라이언트가 사용하는 인터페이스의 구현체로 바꿔주는 패턴 이를 사용해서 클라이언트가 사용하는 인터페이스를 따르지 않는 기존 코드를 재사용할 수 있게 해준다. 간단히 말하자면 나라마다 110v, 220v 등등 규격이 다른 것처럼 코드도 클라이언트 규격이 다를 수 있는데, 어댑터를 사용해서 이를 알맞게 변환해줄 수 있는 것이다. 그러니까 내가 만들어 낸 코드와 클라이언트가 사용하는 코드 간의 차이가 존재할 때에, 이를 맞추어 주기 위해 interface의 구현체로 만들어 주는 것이다. 코드로 확인 이런 식으로, security package에 3개의 java파일이 있다. LoginHandler public class LoginHandler { UserDetailsService use..

이론 정리 2023.02.26

프로토타입 패턴

프로토파입 패턴 기존 인스턴스를 복제하여 새로운 인스턴스를 만드는 방법 복제 기능을 갖추고 있는 기존 인스턴스를 프로토타입으로 사용해 새 인스턴스를 만들 수 있다. 시간이 오래 걸리는 작업(예를 들어 DB에서 데이터를 읽어와서 이걸 토대로 인스턴스를 만들어야 하는 경우, http를 통해 얻은 데이터를 통해 인스턴스를 만드는 경우 등..) 을 할 때에 매번 이를 만드는 것은 리소스와 시간 낭비가 크다. 그렇기 때문에 이렇게 만들어 둔 데이터를 복제해서 새로운 인스턴스를 만들고, 이곳에서 얻어온 정보를 토대로 변경 작업 등을 해주면 더 효율적이게 될 것이다. issue 상황 public class GithubIssue { private int id; private String title; private Gi..

이론 정리/java 2023.01.25

빌더 패턴

빌더 패턴 어떤 인스턴스를 만들 때 다양한 구성으로 만들어 질 수 있는데, 인스턴스를 동일한 프로세스를 통해 만들 수 있게끔 해주는 것이다. 문제 상황 public class TourPlan { private String title; private int nights; private int days; private LocalDate startDate; private String whereToStay; private List plans; public TourPlan() { } public TourPlan(String title, int nights, int days, LocalDate startDate, String whereToStay, List plans) { this.title = title; thi..

이론 정리/java 2023.01.25

추상 팩토리 패턴

추상 팩토리 패턴 tags: Tag(GoF디자인 패턴) 서로 관련있는 여러 객체를 만들어주는 인터페이스 이걸 사용하면 어떤 클래스의 인스턴스를 사용하는지 감출 수 있다. 그래서 팩토리 메서드랑은 뭐가 다른데? 하면 사실 내부 구조는 거의 비슷한데 얘는 Client에서 정보를 숨기는데에 집중한다. (이거 후술) 해당 로직을 구현하는 Client에서 구체적인 class를 사용하는 대신, 추상화된 메서드를 통해 구현하도록 하는 것이다. 추상 팩토리 패턴 세팅 추상적인 interface를 만들어준다. -> 추상 Factory 패턴 public interface ShipPartsFactory { Anchor createAnchor(); Wheel createWheel(); }그리고 저기 Anchor, Wheel도..

이론 정리/java 2022.12.13

팩토리 메소드 패턴

펙토리 메소드 패턴 tags: Tag(GoF디자인 패턴) 구체적으로 어떤 인스턴스를 만들지는 서브 클래스가 정한다. 그니까 그 껍데기를 추상적인 Interface 껍데기로 감싸는 것이다. Factory역할을 할 interface를 만들어준다. 이 interface내의 추상화 메소드를 하위 클래스에서 구체적으로 만들어준다. 그리고 이거의 결과로 나오는것도 문제 상황 public class Client { public static void main(String[] args) { Client client = new Client(); Ship whiteship = ShipFactory.orderShip("WhiteShip", "fbcks97@naver.com"); Ship blackShip = ShipFacto..

이론 정리/java 2022.12.12

싱글톤 패턴

싱글톤 패턴 인스턴스를 오직 한개만 제공하는 클래스 인스턴스를 오직 한개만 만들 수 있어야 한다. 그렇게 만들어진 하나의 인스턴스에 글로벌하게 접근할 수 있어야 한다. 이제 설정이나 그런것들은 싱글톤으로 해주면 될것이다. private Settings() {} private static Settings instance; public static Settings getInstance() { return instance } 이렇게 해주면 instance를 필요할 때에 getInstance를 호출해서 만들어 줄 것이다. 근데 싱글톤은 하나의 인스턴스만을 가질수 있다고 했다. 어떻게 이 싱글톤 패턴을 구현해 줄까? 1. private 생성자에 static메소드를 사용해서 싱글톤 구현 private Setting..

이론 정리/java 2022.12.06