만 들 기 (Builder) 모드 [만 들 기 모드 6 편]
건설 모드 는 대상 의 생 성 모드 입 니 다.
제품 의 내부 표상: 한 제품 은 항상 서로 다른 구성 성분 을 제품 의 부품 으로 하 는데 이런 부품 들 은 대상 일 수도 있 고 대상 이 아 닐 수도 있다. 그들 은 보통 제품 의 내부 표상 이 라 고 부른다.
캐릭터:
1. 추상 적 인 건축 자 역할: 추상 적 인 인 터 페 이 스 를 제시 하여 제품 대상 의 각 구성 성분 의 건설 을 규범화 시킨다.일반적으로 부품 이 있 는 만큼 만 드 는 방법 이 있다.
2. 구체 적 인 건설 자 역할: 이 역할 을 맡 은 것 은 응용 프로그램 과 밀접 한 관 계 를 가 진 일부 유형 으로 응용 프로그램의 호출 에 따라 제품 의 인 스 턴 스 를 만 드 는 것 이다.
이 캐릭터 가 완성 한 인물 은 다음 과 같다.
1) 추상 적 인 건설 자 Builder 가 설명 한 인 터 페 이 스 를 실현 하고 제품 인 스 턴 스 를 만 드 는 작업 을 한 걸음 한 걸음 완성 합 니 다.
2) 건설 과정 완료 후 제품 의 인 스 턴 스 제공
3. 감독자 역할: 이 역할 을 맡 은 유형 은 구체 적 인 건축 자 역할 로 제품 대상 을 만든다.감독자 역할 은 제품 류 의 구체 적 인 지식 이 없고 진정 으로 제품 류 를 가지 고 있다.
구체 적 인 지식 은 구체 적 인 건설 자 역할 이다.
4. 제품 역할: 제품 은 바로 건축 중의 복잡 한 대상 이다.일반적으로 한 시스템 에 하나 이상 의 제품 류 가 있 을 수 있 으 며, 이러한 제품 류 는 반드시 공 통 된 인터페이스 가 있 는 것 은 아니다.
상관 하고 싶 지 않 을 수도 있 습 니 다.
(감독자 역할 은 클 라 이언 트 와 접촉 하 는 역할)
일반 류 는 제품 류 가 하나 도 없 으 면 해당 하 는 구체 적 인 건축 자 류 가 있다 고 말한다.
public class Driector{
private Builder builder;
// ,
public void construct(){
builder = new ConcreteBuilder();
builder.buildPart1();
builder.buildPart2();
builder.retrieveResult(); //retrieve
}
}
//
public abstract class Builder{
//
public abstract void buildPart1();
public abstract void buildPart2();
//
public abstract Product retrieveResult();
}
//
public class ConcreteBuilder extends Builder{
private Product product = new Product();
//
public Product retrieveResult(){
return product;
}
//
public void buildPart1(){
//build the first part of the product
}
public void buildPart2(){
//build the second part of the product
}
}
//
public class Product{
//...................
}
//
//
public class Client{
private static Builder builder;
public static void main(String args[]){
//
builder = new Builder();
//
builder.construct();
//
Product product = builder.retrieveResult();
}
}
:
, , 。
, ,
, , :
1、 , , ;
2、 , Builder ,
, 。
* , ,
。
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class MailSender{
private static MineMessage message;
public static void main(String args[]){
// SMTP
String smtpHost = "smtp.mycompany.com";
//
String from = "[email protected]";
//
String to = "[email protected]";
Properties props = new Properties();
props.put("mail.smtp.host", smtpHost);
Session session = Session.getDefaultInstance(props,null);
try{
InternetAddress[] address = new InternetAddress(to);
// Message
message = new MineMessage(session);
//
message.setFrom(new InternetAddress(from));
//
message.setRecipients(Message.RecipientType.TO,address);
//
messgae.setSubject("Hello from Jeff");
//
message.setSentDate(new Date());
//
message.setText("Hello,
How are things going?");
// ,
Transport.send(message);
System.out.println("email has been sent.");
}catch(Exception e){
System.out.println(e);
}
}
}
///////////////////////////////////////////////////////////////////////////
//
public class Director{
Builder builder;
public Director(Builder builder){
this.builder = builder;
}
// ,
public void construct(String toAddress, String fromAddress){
this.builder.buildSubject();
this.builder.buildBody();
this.builder.buildTo(toAddress);
this.builder.buildFrom(fromAddress);
this.builder.buildSendDate();
this.builder.sendMessage();
}
}
//
import java.util.Date;
public abstract class Builder{
protected AutoMessage msg;
public Builder(){}
//
public abstract void buildSubject();
//
public abstract void buildBody();
//
public void buildFrom(String from){
msg.setFrom(from);
}
//
public void buildTo(String to){
System.out.println(to);
msg.setTo(to);
}
//
public void buildSendDate(){
msg.setSendDate(new Date());
}
// ,
//
public void sendMessage(){
msg.send();
}
}
//
public class WelcomeBuilder extends Builder{
private static final String subject = "Welcome to philharmony news group";
public WelcomeBuilder(){
msg = new WelcomeMessage();
}
//
public void buildSubject(){
msg.setSubject(subject);
}
public void buildBody(){
String body = "Congratulations for making the choice!";
msg.setBody(body);
}
// ,
//
public void sendMessage(){
msg.send();
}
}
/ / 아래 상황 에서 건조 모드 를 사용 해 야 합 니 다.
1) 생 성 이 필요 한 제품 의 대상 은 복잡 한 내부 구조 가 있다.모든 내부 성분 자 체 는 대상 일 수도 있 고 하나의 대상 (즉 제품 대상) 의 구성 성분 일 수도 있다.
2) 생 성 이 필요 한 제품 대상 의 속성 은 서로 의존한다.301P
3) 대상 을 만 드 는 과정 에서 시스템 의 다른 대상 에 사 용 됩 니 다. 이 대상 들 은 제품 대상 을 만 드 는 과정 에서 쉽게 얻 을 수 없습니다.
건조 모드 사용 효과:
1. 건축 모델 의 사용 으로 인해 제품 의 내부 이미지 가 독립 적 으로 변화 할 수 있다.건설 모드 를 사용 하면 클 라 이언 트 가 제품 내부 구성의 세부 사항 을 알 필요 가 없 게 할 수 있다
2. 모든 Builder 는 상대 적 으로 독립 되 고 다른 Builder 와 무관 합 니 다.
3. 모델 이 만 든 최종 제품 은 통제 하기 쉽다.
건설 모델 과 기타 모델 의 관계
건설 모델 과 추상 적 인 공장 모델 의 차이
1. 추상 적 인 공장 모델 에서 공장 대상 이 호출 될 때마다 완전한 제품 대상 으로 돌아 가 고 클 라 이언 트 가 이 를 결정 할 수 있 습 니 다.
제품 이 더 크 고 복잡 한 제품 을 구성 할 수도 있 고 그렇지 않 을 수도 있다.건조 류 는 다르다. 그것 은 조금씩 복잡 한 제품 을 만 들 었 고 이 제품 은
의 조립 과정 은 건설 자 역할 내부 에서 발생 한다.건설 자 모델 의 클 라 이언 트 가 받 은 것 은 완전한 마지막 제품 이다.
2. 다시 말 하면 추상 적 인 공장 모델 과 건축 모델 은 모두 디자인 모델 이지 만 추상 적 인 공장 모델 은 더욱 구체 적 인 기준 에 있다.
건설 모델 은 더욱 거시적인 잣 대 에 있다.하나의 시스템 은 하나의 건설 모델 과 추상 적 인 공장 모델 의 공장 역할 을 할 수 있다.
공장 모델 은 서로 다른 제품 족의 부품 으로 돌아 가 고 건설 자 모델 은 그것들 을 조립 한다.
건설 모델 과 전략 모델 의 차이
1. 건축 모델 은 구조 적 으로 전략 모델 에 가깝다. 사실은 건축 모델 은 전략 모델 의 특수 한 상황 이다. 이 두 가지 모델 의 차 이 는 그들의 의도 에 있다.
다르다건축 모델 은 클 라 이언 트 에 게 새로운 대상 을 조금씩 만 드 는 데 적용 되 고 서로 다른 유형의 구체 적 인 건축 자 역할 은 똑 같은 인 터 페 이 스 를 가지 지만
그들 이 만 든 대상 은 완전히 다 를 수 있다.전략 모드 의 목적 은 알고리즘 에 추상 적 인 인 터 페 이 스 를 제공 하 는 것 이다.다시 말 하면 구체 적 인 전략 류 는 하 나 를 계산한다.
법 은 한 대상 에 포장 되 고 서로 다른 구체 적 인 전략 대상 은 일반적인 서비스 에 서로 다른 실현 을 제공한다.
건조 모드 와 합성 모드 의 관계
1. 제품 의 대상 은 대상 일 수도 있 고 대상 이 아 닌 대상 의 특정한 구성 성분 일 수도 있다.제품 의 부품 이 확실히 대상 이 되면 제품 의 대상 이 된다.
복합 대상 은 제품 내부 에 하위 대상 이 포함 되 어 있 기 때문이다.이 대상 에는 하위 대상 의 구조 가 포함 되 어 있어 합성 모드 로 설명 할 수 있다.
2. 다시 말 하면 합성 모델 은 대상 나무의 구성 구 조 를 묘 사 했 고 건축 모델 은 대상 나무의 생 성 과정 을 묘사 할 수 있다.
'1, 2, 3, 4, 5, 6, 7, 8, 90' 은 고대 여자 가 마음 에 드 는 사람 에 게 쓴 연애시 로 의미 가 있다.
"헤 어 진 후에 두 곳 은 서로 그리워 하고 삼월 의 복숭아꽃 은 물 을 따라 돌 며 사월 의 비파 가 아직 누 렇 지 않 았 는데 노 예 는 거울 을 보고 싶 지만 마음 이 혼 란 스 러 웠 습 니 다."
"오월 의 석 류 는 불 처럼 붉 고, 한사코 찬 비 를 만 나 꽃 에 물 을 주 었 다. 6 월 복날 사람들 은 뜨 거 운 부채질 을 하 며 나 만 추 웠 다. 칠현금 은 마음 이 없 었 다."
"팔 행 서 는 전 할 곳 이 없고 9 연쇄 가 끊 기 고 십 리 장정 이 눈 이 빠 질 것 같 습 니 다."
이것 은 몇 달 동안 의 그리움 을 점차 완성 하 는 과정 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.