티스토리 뷰

Development

[디자인패턴] 01

devbible 2012. 2. 5. 19:24


 /** 요구사항 */
3개화면에 버튼 1개씩있고 각 버튼을 선택하면 다음화면에 각기 해당하는 내용이 표시.
단, 정상작동이 목적이 아님으로 개념상으로 작성.

/** 버튼ACTION class*/
public class Action {
 ButtonAction buttonAction = null;
 public Action(ButtonAction _buttonAction){
  this.buttonAction = _buttonAction;
 }
 public void execute(){
  buttonAction.action();
 }
}

/** 버튼 interface */
public interface ButtonAction{
 public abstrack void action();
}

/** 버튼1 class */
class ButtonType1 implements ButtonAction{
 void action(){
  System.out.println("버튼1에서 요청됨");
 }
}
/** 버튼2 class */
class ButtonType2 implements ButtonAction{
 void action(){
  System.out.println("버튼2에서 요청됨");
 }
}
/** 버튼3 class */
class ButtonType3 implements ButtonAction{
 void action(){
  System.out.println("버튼3에서 요청됨");
 }
}
/** 페이지 1*/
class Page1 {
Action action = new Action(new ButtonType1());
new PageDetail(action);
}
/** 페이지 2*/
class Page2 {
Action action = new Action(new ButtonType2());
new PageDetail(action);
}
/** 페이지 3*/
class Page3 {
Action action = new Action(new ButtonType3());
new PageDetail(action);
}
/** 상세페이지*/
class PageDetail {
 public PageDetail (ButtonAction _buttonAction){
  _buttonAction.execute();
 }
}


이게 맞는지는 모르겠지만..
interface를 사용함으로써 이후 소스수정시 유연함이 높아졌다.
페이지가 더 늘러나더라도 상세페이지class를 수정 할 필요가 없다.

어법상말고 개념상 잘못된부분있으면 댓글달아주세요 ^^

[작성자] devbible.tistory.com


'Development' 카테고리의 다른 글

[JQuery] 클릭한 id가 몇번째 id 인지 알아보기  (0) 2012.03.20
[JAXB] JAXB 란?  (0) 2012.02.16
[Android] URI 구조  (0) 2012.01.18
[Android] MIME Type 리스트  (0) 2012.01.18
[Android] 패키지네임으로 타 어플실행  (1) 2012.01.17
댓글