Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

아님말고

게시판 설계하기 3 본문

Etc

게시판 설계하기 3

스타박씨 2009. 3. 19. 16:10



abstract factory 패턴,
factory 패턴을
이용한 게시판


- BoardField (추상클래스)
- FieldTitle
- FieldWriter
- FieldContent
- FieldAttachFile

- BoardForm (추상클래스)
- NoticeWriteForm
- NoticeListForm
- KinWriteForm
- KinListForm

- BoardWrite.jsp
- BoardWriteProc.jsp


//필드 추상 클래스
abstract class BoardField{
 String fieldName;
 String fieldContent;

 abstract String getFieldContent();
}

//제목 필드
class FieldTitle extends BoardField{

 public FieldTitle(String fieldValue){
  fieldName  = "제목";
  fieldContent = "<input type=text name=title value=" + fieldValue + ">";
 }

 public String getFieldContent{
  String content;
  content = "<tr>";
  content += "<td>" + fieldName +"</td>";
  content += "<td>" + fieldContent +"</td>";
  content += "</tr>";
  return content;
 }
}

//작성자 필드
class FieldWriter extends BoardField{

 public FieldWriter(String fieldValue){
  fieldName  = "작성자";
  fieldContent = "<input type=text name=writer value=" + fieldValue + ">";
 }

 public String getFieldContent{
  String content;
  content = "<tr>";
  content += "<td>" + fieldName +"</td>";
  content += "<td>" + fieldContent +"</td>";
  content += "</tr>";
  return content;
 }
}


//화면 추상 클래스
abstract class BoardForm{
 abstract String formContent();
}

//공지사항 글작성 폼 클래스
class NoticeWriteForm extends BoardForm{
 BoardField fieldTitle = new FieldTitle("제목");
 BoardField fieldWriter = new FieldWriter("작성자");
 
 public String formContent(){
  Stringbuffer sb = new StringBuffer();
  sb.append("<form action=boardWriteProc.jsp>");
  sb.append("<input type=hidden name=btype value=notice>");
  sb.append("<table>");
  sb.append(fieldTitle.getFieldContent());
  sb.append(fieldWriter.getFieldContent());
  sb.append("</table>");
  sb.append("<input type=submit>");
  sb.append("</form>");
 }
}

폼을 가져온다. (BoardForm.jsp)
========================================================
btype = "notice";
bKind =  "list";
BoardForm boardForm;
if(btype.equals("notice")){
 boardForm = new NoticeWriteForm();
}else if(){
 ............
}

out.println(boardForm.fromContent());
========================================================

폼을 처리한다. (BoardProc.jsp)
========================================================
========================================================

 

 

 

//리스트 클래스 (인터페이스)
abstract class List{
 .......
}

//공지사항 리스트 클래스
class NoticeList extends List{
 .........
}

//지식인 리스트 클래스
class KinList extends List{
 ..........
}

//리스트 팩토리 클래스
abstract class ListFactory{
 abstract public List makeList(); 
}

//공지사항 리스트 팩토리 클래스
class NoticeListFactory extends ListFactory{
 public List makeList(){
  return NoticeList
 }
}

[사용하기]

 

'Etc' 카테고리의 다른 글

기타 IT 용어 정리  (0) 2023.03.10
게시판 설계하기 2  (0) 2009.03.19
게시판 설계 하기 1  (0) 2009.03.19
Comments