2013년 9월 25일 수요일

흥미로운 구조...


흠 흥미로운 클래스구조를 발견함

//

package com.jetddo.study.test;

public interface Page {
 
 public void message();

}

//////////////////////////////////

package com.jetddo.study.test;

public class BasePage implements Page {
 
 protected static Page m_instance;
 
 public static Page getInstance(){
  
  if(m_instance == null){
   m_instance = new BasePage(); 
  }
  
  return m_instance;
 }
 
 public void message(){
  
  System.out.println("Base Page");
 }
}

////////////////////////////////////////

package com.jetddo.study.test;

public class ExecPage extends BasePage {
 
 public static Page getInstance(){
  
  if(m_instance == null){
   m_instance = new ExecPage(); 
  }
  
  return m_instance;
 }
 
 public void message(){
  
  System.out.println("Exec Page");
 }
}

//////////////////////////////////////
 
싱글톤 기법인거 같은데..

protected 로 선언하면서 

확장도 가능하게 변형한거 같다.

//

package com.jetddo.study.test;

import org.junit.Test;

public class TestMain {
 
 @Test
 public void test(){
  
  
  
  ExecPage.getInstance();
  
  BasePage.getInstance().message();
  
 }

}

//

m_Instance 가 static 인것을 이용해 클래스간의 변수를 공유하게 하는 방법이다.
클래스를 재정의 하고 싶다면 구현후 ExecPage.getInstance(); 이것만 추가하면 객체가 바뀐다.

댓글 없음:

댓글 쓰기