전체 글41 Observer Pattern 1. 정의 1) 객체 간 1 : n 의존 관계를 정의함. 2) 한 개 객체 상태가 변화될 때, 그 객체와 의존 관계에 있는 모든 객체들이 자동으로 알림을 받고 상태를 갱신 2. 문제 1) 알고싶은 컨텐츠가 업데이트 되었는지 지속적으로 방문하여 확인하는 것은 매우 비효율적이다. 3. 해결방안 1) 컨텐츠 제공자에게 클라이언트를 등록하여, 업데이트 될 때마다 자동으로 클라이언트에게 알려준다. 4. 사용 예제 1) Youtube 구독 시스템. 구독 서비스를 신청하면 게시자가 컨텐츠를 올리면 구독자에게 알려줌. 2) 모닝콜. 일어나기 위해 자다 깨면서 시간을 계속 확인하는 것은 어려움. 일어나야 할 시간에 알람을 받는 것이 효율적 2019. 12. 27. Strategy Pattern 과제 과제 : strategy pattern을 이용해서 파일 속성을 다양한 형태로 비교해서 정렬해서 출력할 수 있는 프로그램을 작성할 것 - 두 가지 방식으로 패턴을 작성하였음 (1) Sorter Interface에 정렬 알고리즘들을 구현한다. 본인이 푼 방식 코드 : https://github.com/kook1932/Computer-Science/tree/master/Design%20Pattern/Strategy%20Pattern01 (2) Comparable Interface에 정렬 기준에 따른 비교 알고리즘 구현 코드 : https://github.com/kook1932/Computer-Science/tree/master/Design%20Pattern/Strategy%20Pattern02 어떤 알고리즘을.. 2019. 12. 26. Strategy Pattern 1. 정의 1) 여러 알고리즘 전략이 존재하고, 상황에 따라 적합한 정책을 적용시킨다. 2. 문제 1) 클라이언트에 모든 알고리즘을 포함시키는 것은 클라이언트 코드의 양이 늘어나고 복잡해짐 -> 유지 보수 어려움 2) 알고리즘의 다른 버전이 존재해서, 중복으로 존재하거나 if문을 이용해서 선택해야함. OCP(Open-Closed Principle) 위반 3. 해결방안 1) 중복을 공통화시키고, 실행 시점에 맞는 알고리즘을 호출하도록 한다(상속 또는 인터페이스 활용) 2) 새로운 알고리즘이 필요하면 알고리즘 클래스를 추가하여 전략적으로 상황에 맞게 알고리즘을 사용할 수 있음. 알고리즘의 확장이 용이함. 4. 사용 예제 1) 조리법이 다른 경우 2) 파일의 압축 방법이 다른 경우 등. 2019. 12. 26. 디자인 패턴을 배워야 하는 이유 19년 2학기에 수강한 "고급객체지향 프로그래밍"에서 디자인 패턴에 대한 내용을 배웠다. 강의에서는 코드를 어떤 방식으로 설계할지에 대해 알려주었다. 내가 생각하는 디자인 패턴을 배워야 하는 이유는 다음과 같다. 1. 객체들의 관계를 loosly coupling 하게 만든다. 객체지향 프로그래밍을 하다보면 객체를 마구잡이로 만들어 객체끼리 데이터를 주고 받다 보면 객체들이 서로 너무 의존적인 관계가 되어, 한 클래스를 수정하게 되면 의존하는 클래스도 모두 바꿔줘야 하는 경우가 생긴다. 그런 경우를 방지하기 위해 객체 간 관계를 독립적으로 유지시켜주어 수정이 필요한 클래스만 수정하게 한다. 2. 코드 재사용 객체가 독립적이기 때문에 비슷한 내용의 클래스가 필요하다면 객체를 조금 수정하거나 혹은 그대로 활용.. 2019. 12. 26. 블로그를 시작하게 된 이유 요즘에는 뭔가 모르는게 생기면 네이버보다 구글을 통해서 검색하는 사람들이 늘고 있다. 특히 컴퓨터 전공자로서 "구글링"이 없으면 안될 정도로 구글링에 많은 힘을 쓰고 있다. 사실 검색만 하는 정보 소비자로서 살아가도 인생에 큰 영향은 없다고 생각했었다. 하지만 점점 구글링을 할 수록 나도 내 정보들을 한 곳에 정리하고 내가 공부한 내용을 사람들이 참고하여 도움이 되는 정보 생산자가 되면 좋겠다는 생각이 들기 시작하여 블로그를 만들게 되었다. 이 블로그는 나의 기록장이기도 하면서, 사람들이 정보를 얻어가는 그런 블로그이다. 따라서 이 블로그 이름도 kook1932(닉네임) + google = koogle 이다. 아직은 학생이기 때문에 전공 + 프로젝트 관련 내용을 정리할 생각이다. 포스팅한 내용 중 지적 .. 2019. 12. 26. 이전 1 ··· 4 5 6 7 다음