본문 바로가기
  • soobinhand의 기술 블로그
728x90

디자인패턴6

[디자인 패턴] Command Pattern 목적 요구사항을 객체로 캡슐화시킴. 이를 이용해서 다른 요구사항을 지닌 클라이언트를 매개변수화 시킬 수 있고, 요구사항을 큐에 넣거나 로그로 남길 수 있으며 작업 취소 기능을 지원할 수도 있음. 문제 상황 사용 객체의 API가 서로 다름. 해결 방안 실행과 요청을 분리. 결과 작은 클래스가 많아지지만, 객체 사용에 필요한 복잡성을 제거하고 감춤 코드 https://github.com/Soobinhand/Design_Pattern 2021. 12. 14.
[디자인 패턴] Facade Pattern 목적 서브 시스템에 있는 여러 개의 인터페이스를 통합하는 한 개의 인터페이스를 제공. 퍼사드는 서브 시스템을 쉽게 사용할 수 있도록 해주는 고급 수준의 인터페이스를 정의합니다. 예를 들어, 리모컨 버튼 하나만 눌러도 여러개가 다 켜지는 그런 리모컨. 문제 상황 서브 시스템이 너무 많고 사용하기가 복잡함. 해결 방안 단순한 인터페이스를 제공하는 객체를 중간에 넣습니다. 결과 최소 지식 원칙에 입각해 의존성을 최소화시킴. 코드 https://github.com/Soobinhand/Design_Pattern GitHub - Soobinhand/Design_Pattern: 디자인 패턴 연습 디자인 패턴 연습. Contribute to Soobinhand/Design_Pattern development by cr.. 2021. 12. 14.
[디자인 패턴] DAO Pattern 목적 업무와 DBMS를 분리하기 위해 사용됩니다. 업무와 데이터 2계층을 분리하고, 서로 그 상태를 동일하게 유지합니다. 문제 DB를 사용하는 방법이 변경되면 클라이언트의 수정이 많아집니다. 데이터를 저장하는 방식이 다양합니다. (데이터베이스, 파일, XML, 엑셀 등등) DBMS에 따라 SQL문이 다를 수 있습니다. 해결방안 사용 방법의 분리 -> loose coupling, 확장성 데이터를 저장하는 방식을 분리하여 클라이언트의 변경 부분을 최소화 시킵니다. 설계 DAO 모델에 대한 기본적인 CRUD 인터페이스 DAOImpl DAO 인터페이스를 구현한 concrete class Value Object DAO를 사용하여 데이터를 저장하는 단순 POJO(Plain Old Java Object) 2021. 10. 29.
[디자인 패턴] Strategy Pattern 목적 같은 종류의 작업을 하는 알고리즘을 정의합니다. 각 알고리즘을 캡슐화하고 알고리즘들을 서로 바꿔 사용할 수 있도록합니다. 해당 패턴은 알고리즘을 사용하는 클라이언트로부터 독립적으로 알고리즘을 바꿔서 적용시킬 수 있도록합니다. 패턴이 필요한 경우 경우에 따라 서로 다른 여러 알고리즘이 존재할 때. 알고리즘이 실행 시점에 결정되어져서 조건문(if, switch...) 등을 이용해서 다른 알고리즘을 선택해야 하는 경우. 문제 알고리즘의 다른 버전이 존재해서, 중복으로 존재하거나 if문을 이용해서 선택해야하는 경우. OCP 를 위반하게 됩니다. 결국 변경되는 부분과 변경되지 않는 부분을 분리하여 설계하자는 것이 이 패턴의 목적입니다. 해결방안 중복을 공통화시킵니다. 실행 시점에 맞는 알고리즘을 호출하도록 .. 2021. 10. 29.
728x90