반응형

GOF의 Design Pattern 에 보진 않았지만,

듣기로는 Factory Pattern를 알아야 기본적인 FrameWork를 이해할수있다고한다.

Interface를 이용하여 Factory클래스 생성후 객체를 찍어내는 방식이다.

머 말로하면 어렵고 예제를 보면쉽다. Factory란 의미가 무엇인가? 공장이다. 그럼 Java에서 객체를 찍어내는

공장이란 의미로 모두들 알수있을것이다.

아래 소스를보자.

======> Animal.java
public interface Animal {
 
 public void printDescription();

}

======> AnimalFactory .java
 public class AnimalFactory {

 public static Animal create(String name) {

  if (name.equals("cow")) {
   return new Cow();
  } else if (name.equals("cat")) {
   return new Cat();
  } else if (name.equals("dog")) {
   return new Dog();
  } else {
   return null;
  }

 }

}

=====> Cat.java
 public class Cat implements Animal {
    public void printDescription() {
        System.out.println("잠만자고있음");
    }
}
=====> Cow.java
public class Cow implements Animal {
    public void printDescription() {
        System.out.println("음메하기만함.");
    }
}
=====> Dog.java 
public class Dog implements Animal {
 public void printDescription() {
  System.out.println("주로 집 지킴");
 }
}

=====> Test.java
 public class Test {

 public static void main(String args[]) {
  Animal a1 = AnimalFactory.create("cow");
  a1.printDescription();
  Animal a2 = AnimalFactory.create("cat");
  a2.printDescription();
  Animal a3 = AnimalFactory.create("dog");
  a3.printDescription();
 }
}



위 소스를 보면 이해하기쉬울것이다. Animal이란 Interface에 만약 하나의 Class가추가 된다고 생각해 보아라.

의존관계를 따져보면 FactoryClass에만 코드를 추가하면 Test에서는 해당 Class를 사용만하면될뿐

Interface는 수정될 필요가없다.

또한 Test에서 객체의 타입을 지정해줄 필요도없는것이다.

Spring의 DI라는 구현방법이 존재한다. Dependency Injection의 약어인데 , 이 기법 도 공부해보길 바란다.

이 기법이 Factory 패턴이 좀 UPGRADE 된것이라고 보면된다.

아~~~ 글쓰기 좀 구찮다.

나만 알기쉽게 대충정리했는데 혹시 보다가 이해못하는 분은 걍 댓글다시오.. 구찮음.

반응형

+ Recent posts