您的位置:首页 > 产品设计 > UI/UE

设计模式-建造模式(Builder)

2013-07-08 00:00 435 查看
Message.java

package cn.foxeye.design.builder;

import java.util.Date;

public class Message {

private String to;
private String from;
private String subject;
private String body;
private Date sendDate;

public void send() {
System.out.println("收件人地址:" + to);
System.out.println("发件人地址:" + from);
System.out.println("标题:" + subject);
System.out.println("内容:" + body);
System.out.println("发送日志:" + sendDate);
}

public String getTo() {
return to;
}

public void setTo(String to) {
this.to = to;
}

public String getFrom() {
return from;
}

public void setFrom(String from) {
this.from = from;
}

public String getSubject() {
return subject;
}

public void setSubject(String subject) {
this.subject = subject;
}

public String getBody() {
return body;
}

public void setBody(String body) {
this.body = body;
}

public Date getSendDate() {
return sendDate;
}

public void setSendDate(Date sendDate) {
this.sendDate = sendDate;
}

}


WelcomeMessage.java

package cn.foxeye.design.builder;

public class WelcomeMessage extends Message {

public WelcomeMessage() {
System.out.println("发送欢迎信息");
}
}


GoodbyeMessage.java

package cn.foxeye.design.builder;

public class WelcomeMessage extends Message {

public WelcomeMessage() {
System.out.println("发送欢迎信息");
}
}


Builder.java

package cn.foxeye.design.builder;

import java.util.Date;

public abstract class Builder {

protected Message message;

public abstract void buildSubject();

public abstract void buildBody();

public void buildTo(String to) {
this.message.setTo(to);
}

public void buildFrom(String from) {
this.message.setFrom(from);
}

public void buildSendDate() {
Date date = new Date();
this.message.setSendDate(date);
}

public void sendMessage() {
message.send();
}
}


WelcomeBuilder.java

package cn.foxeye.design.builder;

public class WelcomBuilder extends Builder {

public WelcomBuilder() {
message = new WelcomeMessage();
}

@Override
public void buildSubject() {
message.setSubject("歡迎內容");
}

@Override
public void buildBody() {
message.setBody("歡迎標題");
}

}


GoodbyeBuilder.java

package cn.foxeye.design.builder;

public class GoodbyeBuilder extends Builder {

public GoodbyeBuilder() {
message = new GoodbyeMessage();
}

@Override
public void buildSubject() {
message.setSubject("歡送標題");
}

@Override
public void buildBody() {
message.setBody("歡送內容");
}

}


Director.java

package cn.foxeye.design.builder;

public class Director {

private Builder builder;

public Director(Builder builder) {
this.builder = builder;
}

public void construct(String to, String from) {
this.builder.buildTo(to);
this.builder.buildFrom(from);
this.builder.buildSubject();
this.builder.buildBody();
this.builder.buildSendDate();
this.builder.sendMessage();
}
}


Main.java

package cn.foxeye.design.builder;

public class Main {

public static void main(String[] args) {

Builder builder = new WelcomBuilder();
Director director = new Director(builder);
director.construct("123@qq.com", "222@qq.com");
}

}


参考实例来源于博客特种兵—AK47《JAVA与模式》26天系列—第3天—抽象工厂模式的文章,仅供自己学习用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息