목록디자인패턴 (5)
개발자이야기
Adapter pattern 어댑터 패턴이란? 용도는 비슷하게 사용되지만 서로 다른 interface를 구현한다면 같이 사용할 수 없다. 이러한 호환성 문제를 해결하기 위해 어댑터 패턴을 이용한다. - 예시 우리는 모니터를 본체와 연결할때 dvi 케이블과 hdmi 케이블을 사용할 수 있다. 하지만 내 모니터는 hdmi만을 연결할 수 있고 나는 dvi 케이블만을 가지고있다. 이를 해결하기위해 dvi를 hdmi로 연결하기 위한 adapter가 필요하다. 코드를 한번 봅시다. DVI public interface Dvi { void insertDviSlot(); void printScreen(); } public class SamsungDvi implements Dvi { @Override public voi..
의존성 주입 이번엔 의존성주입에 좀더 자세히 설명을 해볼까 합니다. 의존성 주입이 무엇일까? 개발을 하다보면 필연적으로 객체 내에서 객체를 사용하게 됩니다. 예를들어 자동차를 만든다고 가정해 봅시다. Car 클래스 라는 껍데기가 있고 그 안에 엔진, 바퀴 등등의 각각의 구성요소(객체)가 들어갑니다. 이것들을 직접 의존하는것이 아닌 추상된 것에 의존하고 외부로 부터 구체화 된 것을 주입 받겠다는 것 입니다. 위의 말은 간단하게 아래의 코드와 같이 특정 객체를 직접 의존해선 안된다는 것 입니다. 이것이 의존성을 갖게 되는것이죠. public class Car { private Gasoline engine; private SnowTier tier; } 그럼 장점은 무엇일까? 1. 코드의 재사용성이 높아집니다...
추상팩토리패턴 추상 팩토리 패턴(Abstract factory pattern)은 다양한 구성 요소 별로 객체의 집합을 생성해야 할 때 유용하다. 이 패턴을 사용하여 상황에 알맞은 객체를 생성할 수 있다. 위의 내용이 무엇일까?? 재료의 공장을 만든다고 생각해봅시다. 예제에서 설명하고자 하는 재료의 공장은 두가지 입니다. 롯데리아 공장, 맥도날드 공장. 각각의 공장에서 하는 일은 같습니다. 재료를 전달해준다. 햄버거의 만드는 과정 1. 고객의 햄버거 주문 2. 주문에 의한 버거메뉴 조리 3. 공장에서의 재료 조달 간단하게 위와같이 3단계의로 나누어 보았습니다. 이제 예제로 한번 살펴봅시다. 코드는 위의 과정을 역순으로 올라가 보겠습니다. 3. 공장에서의 재료 조달 public interface Ingred..
팩토리 메소드 패턴 팩토리 메소드 패턴이란 무엇일까? 우선 아래의 코드를 보도록 하겠습니다. public class BurgerMain { public static void main(String[] args) { BurgerStore store = new BurgerStore(); CheeseBurger burger = store.order(); } } public class BurgerStore { CheeseBurger order() { return new CheeseBurger(); } } 햄버거 가게에 햄버거 주문이 들어왔습니다. 그런데 버거를 주문해봤자 치즈버거만 제공해 줄 수 있는 상황입니다. 너무 극단적인 상황이죠.. 불고기 버거를 추가해 보겠습니다. public class BurgerSto..
템플릿 메소드 패턴 템플릿 메소드 패턴은 추상클래스와 구현클래스로 작성됩니다. 공통적인 부분은 추상클래스의 일반 메소드로 선언하여 사용하며 구현체 마다 다른 로직이 필요한 메소드는 구현 클래스에서 작성하여 추상클래스에서 호출하는 식으로 동작합니다. 코드를 보며 설명해보겠습니다. 토스트를(여기서 말하는 토스트는 먹는 토스트입니다..) 만드는 예제입니다. 예제에는 3단계의 메소드가 있습니다. 1. 빵을 준비하는 단계 2. 토핑을 소스에 뭍히는 단계 3. 토스트를 만드는 단계 예제가 순서는 크게 중요하지 않아 보이나 메소드의 순서에 따라 동기적인 프로세스를 만들 경우를 생각해 본다면 한번 정의만 잘 해놓으면 구현체를 구현하는 과정에서 많은 편의를 느낄 수 있을것 입니다. 기능에만 집중하면 되니까요. publi..