본문 바로가기
반응형

분류 전체보기155

디자인 패턴 - Template Method pattern Template Method pattern : 객체가 실행해야 하는 알고리즘 기본 골격을 추상(부모)클래스에 구현해 놓은 후 서브클래스에서 메소드를 override하여 객체가 수행해야 할 행위의 다양성을 표현하는 방법. ==> 객체지향 프로그래밍 시에 생활화해야 되는 코딩 스타일 / 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화하여 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴. / 상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법. 변하지 않는 기능은 슈퍼클래스에 만들어두고 자주 변경되며 확장할 기능은 서브클래스에서 만들도록 함. - 전체적으로는 동일하면서 부분적으로는 다른 구문으로 구성된 메서드의 코드 중복을 최소화할때 유용함. - 동.. 2022. 4. 12.
디자인 패턴 - Iterator pattern Iterator pattern은 collection 객체의 element들을 traverse하기 위한 기능을 collection 객체와 독립적으로 구현하는 방법. (=객체 지향 프로그래밍에서 iterator를 사용하여 container를 가로지르며 요소들에 접근하는 패턴.) 컬렉션 객체 - 배열, ArrayList, Stack, LinkedList, HashMap등 라이브러리에 있는 Iterator 객체를 구현하는 예제 특징 : Iterator 패턴은 container로부터 알고리즘을 분리시키며, 일부의 경우 알고리즘들은 필수적으로 container에 특화되어 있기 때문에 분리가 불가능하다함. / 유연하고 재사용 가능한 객체지향 소프트웨어를 설계하기 위해 반복되는 디자인 문제를 해결하는 방법. Itera.. 2022. 4. 12.
디자인 패턴 - Facade pattern Facade pattern : facade(건물의 정면) / 특정 서브 시스템에 소속된 여러개의 객체를 액세스하기 위한 통합된 접근 경로를 제공하는 방법. adapter pattern과 facade 이 두개의 패턴은 이질적인 시스템을 연결하는 효과를 제공함. Facade pattern은 클래스 라이브러리 같은 어떤 소프트웨어의 다른 커다란 코드 부분에 대한 간략화된 인터페이스를 제공하는 객체. / facade는 소프트웨어 라이브러리를 쉽게 사용할 수 있게 해줌(공통적인 작업에 대해 간편한 메소드들을 제공해줌). / facade는 라이브러리 바깥쪽의 코드가 라이브러리의 안쪽 코드에 의존하는 일을 감소시켜줌. 대부분의 바깥쪽의 코드가 facade를 이용하기 때문에 시스템을 개발하는데 있어 유연성이 향상됨. .. 2022. 4. 12.
Tree Structure 노트9 - Trie 탐색 트리 트라이 문자열 탐색을 위한 Trie(Prefix tree) 내용이 있다는 것과 그것이 '인식될 수 있는 형식'으로 표현된 것은 다르다. 주소 시스템 같이 내용이 많은걸 할때 씀. 휴대 전화에서 쓰이는 것 같은 예측 문자나 자동 완성에 필요한 사전을 저장하는 것들도 일반적인 응용중 하나/ 주로 문자열이 key인 경우가 많음./ 노드의 모든 자손은 노드에 연관된 문자열의 공통 접두사를 공유한다. 루트는 빈 문자열에 연관된다. Trie의 장단점 : ㆍ트라이는 문자열 검색이 빠름. ㆍ문자열 탐색시, 하나하나 모두 비교하면서 탐색을 하는 것 보다 시간 복잡도 측면에서 훨씬 효율적임. ㆍ각 노드에서 자식들에 대한 포인터들을 배열로 모두 저장하고 있다는 점에서 저장 공간의 크기가 크다는 단점도 있음. 구현.. 2022. 4. 11.
Tree Structure 노트8 - Red-Black Tree Dynamic Operation을 위한 다양한 트리 자료구조가 있을 때, 사람들(coder)가 이해하기 좋은 구조와 사람에게는 어렵지만 컴퓨터에서 효율적으로 동작하는 구조 중 어느것이 좋은가? Dynamic Tree Structure를 선택하는 기준 - Tree기반의 자료구조(Splay Tree, Min-max Tree, Split Tree, Leftist Tree..)/ 얼마나 많은 데이터를 처리해야 하는가?/ inserting이 자주 일어나는가 그리고 이 작업이 연속적인가?/ on-memory에서 효율적으로 동작하는가? 아니면 disk를 사용하는가? Red-Black Tree는 복잡한 자료구조지만, 실사용에서 효율적이고, 최악의 경우에도 상당히 우수한 실행시간을 보임(worst-case guarant.. 2022. 4. 11.
디자인 패턴 - adapter pattern 어댑터 패턴 : 특정 객체의 기능에 어댑터를 wrapping 함으로써 그 객체의 기능을 변경시키는 방법 한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 인터페이스로 변환. 어댑터를 사용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. -> 호환되지 않는 인터페이스를 사용하는 클라이언트를 그대로 활용할 수 있다. + 클라이언트와 구현된 인터페이스를 분리시킬수 있으며, 향후 인터페이스가 바뀌더라도 그 변경 내역은 어댑터에 캡슐화 되기 때문에 클라이언트는 바뀔 필요가 없어짐. 어댑터는 5핀 usb 끝에 달린 c-type 어댑터나 외국 전기 콘센트에 끼우기 위한 220v 플러그에 달린 110v 어댑터 느낌. 기존 시스템 > ) 업체에서 제공한 클래스 └> 기존 시스템 .. 2022. 4. 10.
반응형