디자인 패턴

Composite Pattern? - 단일 객체든, 객체 집합이든, 같은 방법으로 취급하여 다루는 디자인 패턴 - 트리 구조와 상당히 유사한 성격을 가지고 있다. - 클라이언트 전체와 부분을 구별하지 않고, 동일한 인터페이스로 사용한다! 구성 요소 Component : 구체적인 부분 -> 공통 Interface로 선언 Leaf : 구체적인 부분 클래스 -> Interface를 상속받은 객체 Composite : 여러 개의 Component를 가지는 객체 -> Leaf의 집합 * 정말 트리 구조와 유사하지 않나요? * 아닌거 같다면 죄송.. 실제 코드 간단하게 여러분들에게 설명하기 위해서 Code로 작성해보았어요! 우선, 가정을 하나 둘게요. Cafe라는 Domain을 지정해서 설명해볼까 해요 회사를 그만..
Factory Method? - 팩토리 메서드 : 메서드의 호출에 대한 반환값으로 객체를 생산하는 디자인 패턴 너무나 간단하죠? 왜 쓸까요? 어떠한 데이터를 가지고 객체를 생산해야 되는데, 어떤 객체인지 예상이 불가능할 때! 공통 분모를 가지는 부모 클래스 혹은 추상화된 인터페이스를 데이터를 바탕으로 구성할 때! 복잡한 객체를 인스턴스화 하는 논리적인 로직을 따로 분리할 때! 사용 예시 우선은 공통 분모를 가지는 인터페이스를 만들어보았습니다! package designpattern.factorymethod; public interface Car { String getCarName(); } 1. Car 인터페이스 구현 다음으로, 현대차와 기아차를 직접 실체화하였습니다! package designpatter..
Template Method - 템플릿 메서드 패턴 : 특정 작업을 서브 클래스로 캡슐화하는데, 전체 수행 구조는 바뀌지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴 * 호출되는 메서드는 동일하지만, 세부적으로 호출되는 메서드를 로직을 다르게 작성함으로 코드 중복을 최소화한다! * 되게 용어가 복잡하고, 정신없지만 밑에서 정리해드리겠습니다. Why Template Method? - Template Method는 전체적인 로직을 가지고 있지만, 세부 메서드를 추상화하여 상세 로직을 유연하게 바꾸는 방식! - 따라서, 전체 흐름은 동일하게 가고 세부를 변경(코드의 중복 최소화)하는 것이 핵심이다! * 그렇게 되면, 코드의 재사용성을 높이고, 중복을 최소화하여, 객체에 따라서 논리적인 흐름을 변경하는 ..
Observer? - 옵저버 패턴 : 객체 상태의 변화를 관찰하는 관찰자들, 옵저버들의 목록을 객체에 등록하는 디자인 패턴 - 흔히 우리가 아는 Publisher/Subscriber 패턴과 유사하다! - 특정한 Node(Subject)가 다른 Node(Observer)들을 관찰하면서, 알림을 주는 방식이다! * 주로 이벤트 핸들링 시스템을 구현할 때 사용되는 디자인 패턴이다! Why Observer? - 분산 환경에서 각각의 Node에 대한 상태 변화에 빠르게 반응해야 될 때가 있다. 이러한 상황일 때, Observer 패턴을 활용하면 쉽게 변화에 반응할 수 있다! - ROS의 Node 통신 방식도 Observer 패턴구조를 주로 활용하고 있다!! ( 심지어 엄청 유기적으로 통신가능! ) Observer..
디자인 패턴? - Design Pattern(디자인패턴) : 각기 다른 소프트웨어 모듈이나 기능을 가진 응용 소프트웨어를 개발할 때 공통되는 설계 문제를 해결하기 위한 공통된 패턴 그러니까,, 바퀴가 있는데 왜 바퀴를 다시 만들고 있냐? * 우리는 프로그래머니까 효율적인 방식을 택하자! Why,, 디자인 패턴???? - 같은 문제에 대해서는 똑같은 설계법을 사용해서 다른 개발자와 의사소통을 원활하게 하고, 쉽게 개발하자! - 개발자마다 코딩 방식이 다른데, 협업을 위해서는 우리들만의 표준이 필요하다!! - 제발 코드를 작성할 때 읽기 좋게 작성해주세요ㅠㅠ 디자인 패턴 구조 1. Context - 패턴이 적용될 수 있는 상황을 나타낸다. - But, 경우에 따라서는 패턴이 유용하지 못한 상황이 나올 수도 ..
huisam
'디자인 패턴' 태그의 글 목록