Design Pattern22 6. 어댑터 패턴(Adapter pattern) 어댑터 패턴 : 클라이언트가 사용하는 인터페이스가 정해져 있는데, 본인이 사용하는 인터페이스는 다르다면 중간에 adapter 패턴을 적용하여 사용한다. 즉 기존 코드를 클라이언트가 사용하는 인터페이스의 구현체로 바꿔주는 패턴이다. -> 클라이언트가 사용하는 인터페이스를 따르지 않는 기존 코드를 재사용할 수 있게 해준다. ex) 일상생활에서 보면 110V코드를 220V콘센트에 꽂는다던가 또는 그 반대로 할 때 그 사이에 adapter를 사용한다. 코드로 살펴보기 이제 코드로 살펴보자. 시나리오는 다음과 같다. Client인 LoginHandler는 UserDetailsService와 UserDetails를 사용해서 로그인을 할 수 있도록 되어있다. 즉 UserDetailsService와 UserDetail.. 2021. 12. 17. 5. 프로토타입 패턴(Prototype Pattern) 프로토타입 패턴 : 기존 인스턴스를 복제하여 새로운 인스턴스를 만드는 방법. 기존의 객체를 응용하여 새로운 객체를 만들 때 사용한다. 특히 기존의 인스턴스를 만들 때 시간이 오래걸리는 작업. 가령 데이터 베이스에서 데이터를 읽어와서 인스턴스를 생성한다던가 http 요청을 보내서 가져온 데이터로 인스턴스를 만들어야 하는 경우는 상대적으로 오랜시간과 큰 리소스가 필요한 작업이다. 이 때 DB나 http통신으로 가져온 데이터를 복제를 해서 새로운 인스턴스를 만들고 원하는 값만 일부 변경하여 사용한다. 코드로 살펴보기 이제 코드로 살펴보자. GithubRepository와 GitHubIssue객체가 있다. 만약 하나의 repository에 대해서 issue를 만들기 위해서 client코드는 아래와 같다. 그런데.. 2021. 12. 16. 4. 빌더 패턴 (Builder Pattern) 빌더 패턴 빌더 패턴은 동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법이다. 복잡한 인스턴스를 만드는 프로세스를 독립적으로 분리할 수 있다. 만약 아래와 같이 TourPlan 객체를 만든다고 해보자. TourPlan class는 아래와 같다. TourPlan tour의 이름, 몇박 몇일일지, 출발 날짜 등과 같은 필드가 보인다. 구체적인 plan인 DetailPlan class는 아래와 같다. DetailPlan 이제 사용하는 코드는 아래와 같다. 위와 같이 shortPlan과 tourPlan 인스턴스를 만들어 보았다. 그런데 만약 이렇게 다양하고 복잡한 객체를 만들 때 shortPlan과 같은 짧은 여행은 setDays, setNights를 할 필요가 없을 것이다. 이 외에도 많은 종류의 .. 2021. 11. 18. 3. 추상 팩토리 패턴 (Abstract factory Pattern) 추상 팩토리 패턴 서로 관련 있는 객체를 만들어주는 인터페이스. 팩토리 패턴과 유사하지만 초점이 Clinet에 맞추어 졌다고 할 수 있다. 목적: 팩토리에서 인스턴스를 만들어 사용하는 Client코드를 인터페이스 기반으로 코딩할 수 있도록 도와준다. 복잡해 보이지만, 이전의 팩토리 메서드 패턴에서 Client가 추가된 것 뿐이다. 아래와 같은 Car Factory가 있다고 하자. 아래의 createCar 메소드 안에서 WhiteHandle과 WhiteWheel을 직접 new 해서 넣어주고 있다. 하지만 만략 WhiteHandle이 규격이 바뀌어서 이제 WhiteAdvancedHandle을 넣어야 한다면? 이렇게 규격이 바뀔 때 마다 계속해서 코드를 수정해줘야 한다. 즉 현재 구체적인 클래스에 의존하고 있.. 2021. 11. 11. 이전 1 2 3 4 5 6 다음