일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 자바8
- CQRS
- spring
- 스트림
- AWS101
- Java in action
- 클린코드
- Design Pattern
- spring Batch
- spring boot
- Java
- Template Method Pattern
- 패스트캠퍼스
- Java8
- SERVLET
- 디자인 패턴
- facade pattern
- domain
- ddd
- Was
- jsp
- head first
- 자바의 신
- web
- Stream
- Java8 in action
- Java 8 in action
- 자바8인액션
- 자바
- Clean Code
- Today
- Total
목록Design Pattern (3)
주난v 개발 성장기
DB 데이터와 LDAP을 이용해서 인증을 처리하는 클래스를 만들었을 때... 두 클래스는 거의 유사한 코드를 갖게 된다. 실행의 과정 / 단계는 동일한데 일부의 구현이 다른 경우에 사용하는 패턴을 "템플릿 메서드 패턴"이라고 한다. public abstract authenticator { public Auth authenticate(String id, String pw) { if (!doAuthenticate(id, pw) { throw createException(); } return createAuth(id); } protected abstract boolean doAuthenticate(String id, String pw); protected abstract Auth createAuth(Strin..
전략 패턴 - 객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성 - 유사한 행위들을 캡슐화하는 인터페이스 생성 - 객체의 행위를 직접 수정하지 않고, 런타임 시점에 전략을 바꿔주어서 행위를 유연하게 확장 기능 위임. 기존 코드의 변경 없이 외부 주입만 변경하면서 사용하는 패턴 as-is - 계산 클래스에서 모든 처리를 다해줌 - 조건이 추가된다면 코드가 무한정 증가되는 단점을 가짐 public class Calculator { public int calculate(boolean firstGuest, List items) { int sum = 0; for (Item item : items) { if (firstGuest) { sum += (int) (item.getPrice() * 0.9);// ..
코드의 중복, 직접적인 의존 해결에 도움을 주는 패턴 하위 시스템을 쉽게 사용하게 해주는 인터페이스 정의 고수준의 인터페이스를 정의하기 때문에, 서브 시스템을 쉽게 사용할 수 있다.(캡슐화) 사용처 - 캡슐화 되지 않은 코드 처리시에 사용 - 원하는 코드를 다시 작성할 수 없을 때 사용 예시 집에서 영화를 보기 위한 홈 씨어터 시스템을 구축한다고 가정. - DVDPlayer, Cdplayer, Projector, Screen, 등 다양한 클래스들이 필요하다. 영화를 보기 위한 일련의 행동을 나열한다면.. 1. 팝콘 기계를 켜고 2. 튀기고 3. 전등을 어둡게 하고 4. 스크린을 내리고....이를 코드로 나열하자면..Too much....(특히 클라이언트 입장에서) 퍼사드 패턴을 이용하여, 코드를 보면