아님말고
게시판 설계하기 3 본문
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 |