일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- JPA
- 스프링
- ps
- MariaDB
- Project
- 팀프로젝트
- 코딩테스트
- gradle
- Java
- React
- Controller
- AWS
- spring
- 취준생
- 프로젝트
- MVC
- 공유DB
- JDK
- coding test
- 백준
- jdk11
- 코테
- 디자인패턴
- spring boot
- SpringBoot
- 입출력
- IntelliJ
- javascript
- 자취
- 자바
- Today
- Total
목록Concept/Design Pattern (12)
Tech Collection
커맨드 패턴 요청 내역을 객체로 캡슐화하여 클라이언트를 서로 다른 요청 내역에 따라 매개변수화 할 수 있다. 요청을 큐에 저장하거나 로그로 기록할 수도 있고 작업 취소 기능을 지원할 수도 있다. 명령을 내리는 클래스는 실제 액션이 어떻게 통하는지 몰라도 되게 하는 것 Invoker execute() 메소드 호출해서 커맨드 객체에게 특정 작업을 수행해 달라는 요구를 하게 된다. Receiver 요구사항을 수행하기 위해 어떤 일을 처리해야 하는 지 알고 있는 객체 메타 커맨드 패턴 명령들로 이루어진 매크로를 만들어서 여러개의 명령을 한 번에 실행 매크로 command의 배열을 가진 또 다른 ConcreteCommand를 정의하여 invoker에 세팅 execute()에서 반복문을 통해 들고 있는 모든 com..
이터페이터 패턴 컬렉션 구현 방법을 노출 시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있게 해주는 방법 제공 aggregate object의 세부 구현을 드러내지 않으면서 그것의 elements들을 순차적으로 접근할 수 있는 방법을 제공 SRP Single Responsibility Principle 하나의 클래스는 변경될 하나의 이유를 가져야 한다. Cohesion (응집도) 높음 : 하나의 클래스가 하나의 기능을 함 낮음 : 하나의 클래스가 서로 관련이 적은 여러 기능을 함 SRP를 잘 지키면 높다 iteration 기능을 캡슐화하여 aggregate로 부터 분리함으로써 SRP를 지킬 수 있게 한다. aggregate: data들의 collection을 가지고 있는 class 분..
템플릿 메소드 패턴 메소드에서 알고리즘의 골격 정의 알고리즘의 여러 단계 중 일부는 서브 클래스에서 구현할 수 있다. 알고리즘의 구조는 그대로 유지하면서 서브 클래스에서 특정 단계를 재정의 할 수 있다. superclass가 알고리즘을 정의하고, 단계별로 실행될 메소드 등 로직을 정해놓으면 subclass에게 일부 로직의 구현만을 맡기는 패턴 subclass 필수 final 선언 Hook Optional한 Step을 정의할 수 있다. subclass가 꼭 구현하지 않아도 된다. 보통 아무 로직이 없거나 default 로직이 있다. boolean을 반환하는 hook을 만들어 template method 내의 if문에서 호출하면 조건부 실행 제어가 가능 특정 step의 실행 직전/후에 subclass가 re..
퍼사드 패턴 어떤 서브 시스템의 일련의 인터페이스에 대한 통합된 인터페이스 제공 기존의 복잡한 interface를 단순화하기 위해 interface를 교체하는 것 복잡도 감소, 유지보수성 증가 → 런타임 퍼포먼스 감소, Wrapper 클래스가 많아질 수 있음 최소 지식 원칙 어떤 객체든 그 객체와 상호작용을 하는 클래스의 개수에 주의해야 함 그런 객체들과 어떤 식으로 상호작용을 하는지에도 주의를 기울여야 한다 호출해도 되는 메소드 자신이 가진 메소드 메소드의 파라미터로 전달되는 객체가 가진 메소드 메소드가 생성하거나 인스턴스화 하는 객체의 메소드 멤버 변수의 메소드 public House { WeatherStation station; // other methods and constructor public..
어댑터 패턴 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환 가능 인터페이스의 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 사용 가능 Enumeration Vector, Stack, Hashtable hasMoreElements(), nextElements() Iterator 이후 버전에서 생긴 새로운 Collections 클래스 hasNext(), next(), remove()
스테이트 패턴 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다. 각각의 state들을 class로 구현한다. 공통된 행위의 종류를 interface로 빼고, concrete 클래스들이 이를 구현하도록 한다. strategy 패턴과의 차이점 서브클래스를 만드는 방법을 대신하여 유연성을 극대화하기 위한 용도로 쓰임 행동의 변화를 context가 제어 state는 내부적으로 정의된 state transition에 따라 변경된다. 장점 여러 개의 if문을 사용하여 현재 state에 따른 행동을 결정하는 것 각각의 state를 class로 만들고, 현재 state를 composition하는 방식으로 구현하여 로직에서 달라지는 부분인 각 ..
데코레이터 패턴 객체에 추가 요소를 동적으로 더할 수 있다. 서브 클래스를 만드는 경우에 비해 훨씬 유연하게 기능을 확장할 수 있다. 기존 코드를 수정하지 않고도 행동을 확장하는 방법이 필요할 때 사용 구성과 위임을 통해서 실행 중에 새로운 행동을 추가할 수 있다. 데코레이터의 개수에는 제한이 없다. 데코레이터를 너무 많이 사용하면 코드가 필요 이상으로 복잡해질 수도 있다.
팩토리 패턴 객체 생성을 캡슐화 할 수 있다. 클라이언트와 구상 클래스를 분리시키기 위한 간단한 기법으로 활용할 수 있다. 객체 생성은 서브 클래스에게 위임되고 서브 클래스에서는 팩토리 메소드를 구현한다. 애플리케이션의 구상 클래스에 대한 의존성을 줄여줌으로써 느슨한 결합을 도와준다. Factory Method Pattern 객체를 생성하기 위한 인터페이스를 만든다. 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하도록 한다. 인스턴스를 만드는 일을 서브클래스로 미룰 수 있다. inheritance를 통해 object 생성, 하나의 object 생성만 담당 Abstract Factory Pattern 서로 연관된, 또는 의존적인 객체들로 이루어진 제품군을 생성하기 위한 인터페이스를 제공한다. 구상클..