목록분류 전체보기 (79)
영권's
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dJjsEF/btre4OE9kj5/sZZxd9e3SpQAjAUoKh0lQ0/img.png)
Factory Method Pattern Factory Method Pattern는 부모(상위) 클래스에 알려지지 않은 구현 클래스를 생성하는 패턴으로 자식(하위) 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴입니다. Product은 인터페이스를 선언하며, 이 인터페이스는 작성자와 하위 클래스가 생성할 수 있는 모든 개체에 공통적입니다. Concrete Product는 제품 인터페이스의 구현입니다. Creator 클래스는 새 Product 개체를 반환하는 Factory Method를 선언합니다. 이 메서드의 반환 유형은 Product 인터페이스이어야 합니다. 이름과 다르게 Creator의 주된 책임은 Product 생성이 아닙니다. 일반적으로 Creator클래스는 이미 제품과 관련된 몇가지 핵심 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/biK4TM/btre6lPJb1J/5HgCeOuNzrO0R2TzKGEtmk/img.png)
IoC Inversion of Control의 약자로 "제어의 역전"을 뜻하는데 객체의 생성부터 호출, 관리등을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미합니다.또한 DI(Dependency Injection)이라고도 합니다. IoC에서 객체를 생성하고 종속성을 정의하는 과정은 객체를 생성자 인수, 팩토리 메서드에 대한 인수 또는 팩토리 메서드에서 반환된 객체 인스턴스에 설정 Properties들을 통해서만 가능합니다. 그런 다음 컨테이너는 빈을 생성할 때 이러한 종속성을 주입합니다. 이 과정은 기본적으로 클래스를 직접 인스턴스화 하는 방법과는 반대입니다. org.springframework.beans및 org.springframework.context패키지는 Spring 프레임 워크의..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/P6yOE/btreDUrHTkg/Ln5Wvzjey4ykyhA63d7lxk/img.png)
Visitor Patterns 객체 지향 프로그래밍과 소프트웨어 공학에서 비지터 패턴(visitor pattern; 방문자 패턴)은 알고리즘(비즈니스 로직)을 객체 구조에서 분리시키는 디자인 패턴이다. 이렇게 분리를 하면 구조를 수정하지 않고도 실질적으로 새로운 동작을 기존의 객체 구조에 추가할 수 있게 된다. 개방-폐쇄 원칙을 적용하는 방법의 하나이다. (출처 : 위키백과) 문제점 예시 상황 하나의 거대한 그래프로 구성된 지리 정보와 함께 작동하는 앱을 개발한다고 했을 때, 그래프의 각 노드는 도시와 같은 복잡한 실체를 나타낼 수 있지만, 산업, 관광 지역 등과 같은 보다 세분화된 것들을 나타낼 수도 있다. 노드가 나타내는 실제 개체 사이에 도로가 있으면 노드가 다른 개체와 연결됩니다. 이후에 그래프를..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/tPW1E/btreww6v3tF/afdQFhrFCgrmVWetPJShYK/img.png)
문제 : 링크 이 문제는 시작점에서 도착점까지 제시된 방법에 따라 이동했을 때 최소 이동 횟수를 찾는 문제입니다. 풀이 각각의 입력 값을 받고 bfs를 통해 현재 위치에 대해서 이동가능한지 조건에 따라 확인 후 이동 가능하면 노드에 위치와 이동 횟수를 입력 받아서 다시 큐에 그 노드를 넣어서 bfs를 통해 탐색할 수 있도록 한다. 노드를 큐에서 뺄 때 도착점과 같다면 answer변수에서 노드에 담긴 count를 받아서 출력한다. 큐에 있는 데이터가 모두 빠졌는데 도착하지 못했다면 answer는 0일 것이고 도착할 수 없다는 뜻으로 BUG FOUND를 출력한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Q66td/btrdJjOfoQb/DffKjC5tEXzzEwDGQ9oi1K/img.png)
Template Method 템플릿 메서드는 슈퍼클래스에서 알고리즘의 골격을 정의하지만 구조를 변경하지 않고 서브클래스가 알고리즘의 특정 단계를 재정의할 수 있도록 하는 행동 디자인 패턴입니다. 문제점 예시 예를 들어, 사용자는 다양한 형식(PDF, DOC, CSV)의 앱 문서를 제공하고 이러한 문서에서 일관된 형식으로 의미 있는 데이터를 추출하려고 합니다. 이때 doc,csv,pdf의 데이터 형식에 대한 처리는 다르지만 해당 데이터를 처리하고 분석하는 것은 동일할 것입니다. 알고리즘 구조를 그대로 두고 코드 중복을 제거하는 것이 좋을 것입니다. 클라이언트 코드와 관련된 또 다른 문제가 있었습니다. 처리 대상의 클래스에 따라 적절한 조치를 취하는 조건문이 많이 있을 수 있습니다. 세 가지 처리 클래스 모..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dmiVu4/btrdpDMu4DL/GHZICLcSyMC5yJPiZgNXlk/img.png)
옵저버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. 발행/구독 모델로 알려져 있기도 하다. 이 패턴의 핵심은 옵저버 또는 리스너(listener)라 불리는 하나 이상의 객체를 관찰 대상이 되는 객체에 등록시킨다. 그리고 각각의 옵저버들은 관찰 대상인 객체가 발생시키는 이벤트를 받아 처리한다. Subject(관찰 대상자)의 역할 Subject는 "관찰되는 대상" 을 나타냅니다. Subject 역할은 관찰자인 Observer 역할을 등록하는 메소드와 삭제하는 메서드를 갖고..