Developer/Design Pattern

Adapter Pattern? - 어댑터 패턴 : 서로 간의 호환성이 없는 인터페이스를 함께 동작할 수 있게 해주는 디자인 패턴 예를 들어, Ethernet Port와 USB Port가 있다고 가정해보자! 둘간의 Port는 절대로 같이 연결할 수 없다. 하지만, 중간고리 역할(Adapter)이 있다면 둘 간의 연결은 가능해진다! Why Adpater? 그럼 어떨 때 Adapter 패턴을 적용하고, 왜 써야 할까? Client는 Target 인터페이스만 알면, 실체화된 Adapter 객체가 알아서 로직을 흐르게 해준다! Adapter는 Adaptee를 이용하여 요청에 대한 결과를 반환하게 된다! Client의 입장에서 Target에서의 Adaptee의 존재를 눈치채지 못하고 숨길 수 있다! 한마디로, 엄~..
Factory Method? - 팩토리 메서드 : 메서드의 호출에 대한 반환값으로 객체를 생산하는 디자인 패턴 너무나 간단하죠? 왜 쓸까요? 어떠한 데이터를 가지고 객체를 생산해야 되는데, 어떤 객체인지 예상이 불가능할 때! 공통 분모를 가지는 부모 클래스 혹은 추상화된 인터페이스를 데이터를 바탕으로 구성할 때! 복잡한 객체를 인스턴스화 하는 논리적인 로직을 따로 분리할 때! 사용 예시 우선은 공통 분모를 가지는 인터페이스를 만들어보았습니다! package designpattern.factorymethod; public interface Car { String getCarName(); } 1. Car 인터페이스 구현 다음으로, 현대차와 기아차를 직접 실체화하였습니다! package designpatter..
Abstract Factory? - 추상 팩토리 : 서로 관련이 있는 객체를 묶은 다음 팩토리 클래스(Object)를 만들어서, 조건에 따라 객체를 생성하게 하는 디자인 패턴 * 주로 비슷한 특성을 가지는 객체를 생성할 때, 어떤 객체를 생성할 것인지 판별하는 로직을 Factory Class에게 책임을 위임하여 수행하게 된다! 예를 들어, Rectangle(직사각형) Circle(원) 이라는 객체들은.. Shape(도형) 이라는 공통적인 부분이 존재한다! 이런 비슷한 객체들을 Shape Factory가 객체를 생성하게 위임하는 것이다!!! 실제 코드 다음과 같은 인터페이스가 있다고 해보자. package designpattern.abstractfactory; interface Shape { String ..
Template Method - 템플릿 메서드 패턴 : 특정 작업을 서브 클래스로 캡슐화하는데, 전체 수행 구조는 바뀌지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴 * 호출되는 메서드는 동일하지만, 세부적으로 호출되는 메서드를 로직을 다르게 작성함으로 코드 중복을 최소화한다! * 되게 용어가 복잡하고, 정신없지만 밑에서 정리해드리겠습니다. Why Template Method? - Template Method는 전체적인 로직을 가지고 있지만, 세부 메서드를 추상화하여 상세 로직을 유연하게 바꾸는 방식! - 따라서, 전체 흐름은 동일하게 가고 세부를 변경(코드의 중복 최소화)하는 것이 핵심이다! * 그렇게 되면, 코드의 재사용성을 높이고, 중복을 최소화하여, 객체에 따라서 논리적인 흐름을 변경하는 ..
Observer? - 옵저버 패턴 : 객체 상태의 변화를 관찰하는 관찰자들, 옵저버들의 목록을 객체에 등록하는 디자인 패턴 - 흔히 우리가 아는 Publisher/Subscriber 패턴과 유사하다! - 특정한 Node(Subject)가 다른 Node(Observer)들을 관찰하면서, 알림을 주는 방식이다! * 주로 이벤트 핸들링 시스템을 구현할 때 사용되는 디자인 패턴이다! Why Observer? - 분산 환경에서 각각의 Node에 대한 상태 변화에 빠르게 반응해야 될 때가 있다. 이러한 상황일 때, Observer 패턴을 활용하면 쉽게 변화에 반응할 수 있다! - ROS의 Node 통신 방식도 Observer 패턴구조를 주로 활용하고 있다!! ( 심지어 엄청 유기적으로 통신가능! ) Observer..
Visitor Pattern? - 방문자 패턴(Visitor Pattern) : 알고리즘을 객체 구조에서 분리시키는 디자인 패턴이다. - 분리를 하게 되면, 구조를 수정하지 않고 새로운 동작을 기존 객체에 추가할 수 있다!! -> 개방 폐쇄 원칙을 적용하게 된다! Why Visitor Pattern? - 데이터 구조와 연산을 분리 하여 인스턴스 필드를 변경하지 않고 새로운 연산을 추가할 수 있기 때문이다! - 한마디로, domain에게 View를 위한 책임은 Visitor에게 위임하기 위해서 사용된다! - 새로운 연산을 더 만들고 싶다면, 새로운 방문자를 추가하면 된다! 패턴 적용 Car Interface 구현 * Car Interface를 구현해보자! package visitor.domain; impo..
huisam
'Developer/Design Pattern' 카테고리의 글 목록 (2 Page)