일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- springdatajpa
- jpa
- Proxy
- QueryDSL
- http
- kotlin
- Servlet
- 인프런
- Greedy
- Thymeleaf
- transaction
- spring
- 스프링 핵심 기능
- 스프링
- 김영한
- db
- 자바
- java
- JPQL
- JDBC
- 스프링 핵심 원리
- Exception
- Android
- AOP
- pointcut
- Spring Boot
- 그리디
- 알고리즘
- 백준
- SpringBoot
- Today
- Total
목록Java/디자인 패턴 (26)
개발자되기 프로젝트
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cs534J/btrkHJkReRJ/XA6ueioaUzDpjnLjtHaIuK/img.png)
1.Facade Pattern ?? 간단한 창구 서브 시스템이 여러개인 경우 이를 통합한 하나의 인터페이스를 제공 서브시스템을 좀 더 편하게 이용하기 위한 높은 수준의 인터페이스를 정의 각 서브시스템의 역할이나 의존관계를 내부에서 올바른 순서로 사용할 수 있도록 외부에는 간단한 인터페이스만을 오픈 2. 의도, 동기 서브시스템을 합성하여 사용하는 다수 객체의 집합에 대한 하나의 일관된 인터페이스를 제공함으로써 사용하기 쉽게 함 사용의 오류를 방지 컴파일러 시스템의 경우 컴파일 명령어만 사용할 뿐 내부의 각 서브시스템의 구조를 알 필요가 없음. 3. Class diagram 4. 객체 협력 (collaborations) Facade : 하나의 일관된 인터페이스 제공 5. 중요한 결론 (consequence)..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ysmPM/btrkC8cOsYO/Op6OykyFkDD7T9rr6V9XhK/img.png)
1. Memento Pattern?? 내부 상태를 객체화 하여, 나중에 객체가 이 상태로 복구 가능하게 함 인스턴스의 상태를 보존해 두었다가 보존해 둔 정보를 가지고 인스턴스를 원래 상태로 복원 인스턴스를 복원하기 위해서는 내부 정보에 자유롭게 접근 가능해야 함 캠슐화 파괴가 일어나지 않도록 주의해야함. 2. 의도와 동기 이전의 상태로 되돌리는 undo 했던 작업을 다시 하는 redo 기억해야 하는 순간을 저장하는 객체 오류를 복구하거나 수행 결과를 취소하기 위한 작업에 사용 3. Class diagram 4. 객체 협력 (collaborations) Memento : Originator 객체의 내부 상태를 필요한 만큼 저장한다. Originator만이 Memento에 접근할 수 있다. Originato..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/buxNUI/btrkz3KMbEQ/vJ2UwLflJrNc70xgTKFV2K/img.png)
1. Observer Pattern?? 객체 사이에 일대다의 의존 관계가 있고, 어떤 객체의 상태가 변하게 되면, 그 객체에 의존성을 가진 다른 객체들이 변화에 통지(notiry or update)를 받고 자동으로 갱신될 수 있게 함. dependent, publish-subscribe 2. 의도와 동기 하나의 객체에 연동되는 여러 객체 집합이 있을 때 변화에 대한 일관성은 유지하고, 객체간의 결합도는 낮게하기 위한 패턴 변화에 관심이 있는 개체에 대한 가정없이 통보될 수 있도록 해야함. 주오 data-view의 관계에서 사요오딤 log와 그 handler들의 관계(file, console 등등) 3. Class diagram 4. 객체 협력 (collaborations) Subject : Observe..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/3DNBp/btrko6NCZsa/hssNkaUQDBdV4pj12loE1K/img.png)
1. State Pattern? 클래스가 하나(변수)의 상태에 따라 그 내부의 여러 메서드의 기능이 바뀐다고 하면 이를 각각의 클래스로 분리한다. 2. 의도 (Intent)와 동기(Motivation) 객체의 기능은 상태에 따라 달라질 수 있는데, 이러한 상태가 여러가지이고, 클래스 전반의 모든 기능이 상태에 의존적이라 하면, 상태를 클래스로 표현하는 것이 적절함 클래스로 분리하지 않게 되면 상태가 여러가지인 경우 많은 if-else 문이 사용되고 추후 상태가 추가되거나 삭제될 때 수정해야 하는 사항이 너무 많아짐 3. Class diagram 4. 객체 협력 (collaborations) Context : ConcreteState의 인스턴스를 관리하고 서로 상태가 바뀌는 순간을 구현할 수 있다. Sta..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/qt1sr/btrkjXECNR7/dStakDqQjbANP5R2oCL150/img.png)
1.Adapter Pattern 서로 다른 인터페이스를 중간에서 연결해주는 기능 이미 사용중이거나 정의된 인터페이스들을 중간에서 맞춰서 적용해 줄 수 있음 예) 안드로이드 ListView Adapter 2. 의도 (Intent)와 동기(Motivation) 클라이언트에서 사용하던 방식대로 호출하여 사용할 수 있도록 조정해주는 기능 서로 일치하지 않는 인터페이스를 변경하지 않고 중간에서 호출하여 사용할 수 있도록 제공 Wrapper 3. 해결 방법 (Solution) 상속을 활용하여 구현하는 Adapter 객체 합성의 방법으로 구현하는 Adapte 4. Class diagram 상속 방법 합성 방법 : 상속보다 유연한 방법, 코드 재사용 목적이면 합성을 ㅊㅊ 상속은 일반적인 클래스를 구체화 하는 방법. 5..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cgPxoU/btrkorEo6D0/gLVexaKsCn2Gf9gYbHTUb1/img.png)
1. Composite Pattern 그릇과 내용물을 동일시 2. 의도 (Intent)와 동기(Motivation) 부분과 전체에 대한 복합 객체의 트리구조를 나타낼 수 있음 클라이언트가 개별 객체와 복합 객체를 동일하게 다룰 수 있는 인터페이스를 제공 재귀적인 구조 3. Class diagram 4. 객체 협력 (collaborations) Component -- 전체와 부분 객체에서 공통으로 사용할 기능 선언 -- 전체 클래스가 부분요소들을 관리하기 위해 필요한 인터페이스 선언 -- 전체와 부분 객체에서 공통적으로 사용할 인터페이스 선언 Leaf: -- 집합 관계에서 다른 객체를 포함할 수는 없고 포함되기만 하는 객체로 가장 기본이 되는 기능을 구현 Composite: -- 포함한 여러 객체를 저장하..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/qUOjP/btrkji9vkA5/Q0qTr7pmonSg5czDMWFcW1/img.png)
1. Decorator Pattern 장식과 실제 내용물을 동일시 객체에 동적으로 책임을 추가 2. 의도 (Intent)와 동기(Motivation) 상속을 사용하지 않고 기능의 유연한 확장이 가능한 패턴 객체에 동적으로 새로운 서비스를 추가 할 수 있음 전체가 아닌 개별적인 객체에 새로운 기능을 추가 할 수 있음 3. Class Diagram 4. 객체 협력 (collaborations) Component : 동적으로 추가할 서비스를 가질 수 있는 객체 정의 ConcreteComponent : 추가적인 서비스가 필요한 실제 객체 Decorator : Component의 참조자를 관리하면서 Component에 정의된 인터페이스를 만족하도록 정의 Decorator 는 Component를 참조하거나 또 다른..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b5kdl9/btrj7yE0n8x/6jrjpDnUPD2ZQYTiezdUD0/img.png)
1. Bridge Pattern 기능의 계층과 구현의 계층을 분리함 추상화와 구현을 분리하여 각갇을 독립적으로 변경할 수 있게 함. 2. 의도 (Intent)와 동기(Motivation) 기능의 확장과 구현의 확장을 따로 계층화 함 기능에 대한 여러가지 구현을 다양하게 적용할 수 있음 기능과 구현이 혼재하면 상속의 관계가 복잡해짐 두 계층을 분리하고 서로의 사이에 다리(Bridge)가 필요함 3. Class diagram 4. 객체 협력 (collaborations) Abstraction (List) 추상화 개념의 상위 클래스이고 객체 구현자(Implemntor)에 대한 참조자를 관리 RefinedAbstraction (Stack, Queue) 추상화 개념의 확장된 기능을 정의 Implementor (A..