반응형

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 된것이라고 보면된다.

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

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

반응형
반응형

어떤 시스템이든 설정파일을 가져오는 경우가 많다.

아래소스는 Properties Class를 이용하여 " " , \t , \r , \f , "=" 문자열을 기준으로 key와 value로 나눈다.

이 클래스는 HashMap 클래스를 상속받아 구현한 클래스로서

자세한건 API를 까보기 바란다. ㅋㅋㅋ 그리 소스가 어렵지 않았다.

이전 파견지에서 Value에 #이 들어간 경우가 있어서 구분자를 인식하기 어려운 케이스가 있었으나,

아래 클래스를 이용하면 깔끔히 해결됨.


import java.io.FileReader;
import java.util.*;

public class PropertyTest {

 public static void main(String args[]) {

  try {
   Properties pro = new Properties();

   FileReader file = new FileReader("./sample.txt");

   pro.load(file);

   System.out.println(pro.getProperty("name"));

  } catch (Exception ex) {

  }

 }
}



반응형

'Program > JAVA' 카테고리의 다른 글

Spring 설정 방법 - UPDATE중  (0) 2010.02.09
[ Factory Pattern ]  (0) 2010.02.07
JAVA - LINUX 명령어 실행하는 방법  (0) 2010.02.06
자바 메일 강의자료 Sendmail  (0) 2010.01.27
String Class 사용시 주의사항  (2) 2010.01.21
반응형

JAVA 에서 LINUX 명령어를 실행해야하는 경우가 가끔있다.

언제고 한번은 써먹을 수 있을것 같지만 그때 되면 까먹을것 같다.

그래서 이렇게 미리 한번 만들어 보고

이거 그대로 해서

다음에  쓰도록 해야징.ㅋㅋㅋㅋ


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Oper {

   public static void main(String args[]) throws Exception{

      System.out.println(args[0]);
      Oper.exec(args[0]);

   }

   public static void exec(String cmd) throws Exception {

      Runtime runtime = Runtime.getRuntime();
      Process process = runtime.exec(cmd);
      InputStream is = process.getInputStream();
      InputStreamReader isr = new InputStreamReader(is);
      BufferedReader br = new BufferedReader(isr);
      String line;

      while ((line = br.readLine()) != null) {
         System.out.println(line);
      }
   }
}

반응형

'Program > JAVA' 카테고리의 다른 글

[ Factory Pattern ]  (0) 2010.02.07
Properties Class를 이용하여 설정파일 가져오기  (0) 2010.02.06
자바 메일 강의자료 Sendmail  (0) 2010.01.27
String Class 사용시 주의사항  (2) 2010.01.21
자바 특별한 Exception  (0) 2010.01.11
반응형

시간있을때 함읽어봐야징 ㅋㅋ

반응형

+ Recent posts