JAVA 디자인 모드: 작성자(Builder)
3627 단어 java 디자인 모드
건설자 모델은 제품의 내부 이미지와 제품의 생성 과정을 분리하여 하나의 건설 과정에 서로 다른 내부 이미지를 가진 제품 대상을 생성한다.건조 모델은 제품 내부의 이미지를 독립적으로 변화시킬 수 있기 때문에 고객은 제품 내부 구성의 세부 사항을 알 필요가 없다.건조 모델은 단계별로 진행되는 건조 과정을 강제로 실행할 수 있다.
건설자 모델에 관련된 세 가지 역할:
온라인 클래식의 파일 작성 프로세스를 예로 들면 먼저 작성할 제품, 즉 파일 객체를 살펴보고 파일은 세 부분으로 구성됩니다.
public class MyFile {
private String head;
private String content;
private String end;
public void setFcontent(Strig content) {
this.content = content;
}
public void setEnd(String end) {
this.end = end;
}
public void setHead(String head) {
this.head = head;
}
public void write(String path) throws IOException{
File f=new File(path);
PrintWriter out=new PrintWriter(new FileWriter(f));
out.println(head);
out.println(content);
out.println(end);
out.close();
}
}
다시 한 번 창설자를 살펴보자. 여기는 인터페이스이다.
public interface FileBuilder {
void buildHead();
void buildContent();
void buildEnd();
MyFile getResult();
}
마지막으로 감독자는 대상의 창설 과정을 실시하는 데 사용한다.
public class FileDirector {
private FileBuilder filebuilder;
public FileDirector(FileBuilder filebuilder){
this.filebuilder=filebuilder;
}
public MyFile construct(){
filebuilder.buildHead();
filebuilder.buildContent();
filebuilder.buildEnd();
return filebuilder.getResult();
}
}
XML 파일과 TXT 파일을 각각 작성하는 데 사용되는 두 명의 작성자
public class XmlFileBuilder implements FileBuilder{
private MyFile file = new MyFile();;
public void buildHead() {
file.setHead("<?xml version=\"1.0\"?><content>");
}
public void buildContent() {
file.setContent("<node>value</node>");
}
public void buildEnd() {
file.setEnd("</content>");
}
public MyFile getResult() {
return file;
}
}
public class TxtFileBuilder implements FileBuilder{
private MyFile file = new MyFile();;
public void buildHead() {
file.setHead("this it the txt file head");
}
public void buildContent() {
file.setContent("this it the txt file content");
}
public void buildEnd() {
file.setEnd("this it the txt file end");
}
public MyFile getResult() {
return file;
}
}
마지막으로 테스트 코드:
public void test(){
FileBuilder builder = new XmlFileBuilder();
FileDirector director = new FileDirector(builder);
MyFile file = director.construct();
//
}
위의 코드를 보면, 우리는builder의 실현을 바꾸어 서로 다른 대상을 만들 수 있으며, 대상의 창설 과정은 매우 잘 숨겨져 있고, 창설되지 않은 대상을 노출하지 않을 수 있다.
개발자로서 JDK가 제공하는 도구류인 StringBuilder나StringBuffer를 사용한 적이 있다. 사실상StringBuilder와StringBuffer가 사용하는 것이 바로 건설자 모델이다.
추가 JAVA 디자인 모드
더 많은 훌륭한 오리지널 글은 필자의 오리지널 블로그를 주목해 주십시오.
http://www.coolfancy.com
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
어댑터(클래스 어댑터, 객체 어댑터 모드)1: 클래스 어댑터 모드 만일 우리가 Person류가 있다면, 이 Person류에는 불고 당기는 방법이 있다.시스템 개발의 절반에 이르러 우리는 이 종류에 두 가지 방법을 더 첨가하여 연주, 당기기, 연주, 노래의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.