建造者模式
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。
题目
写情书,分为几个步骤:
- 称呼对方
- 称赞对方
- 表白
- 约会交流
Contend类主要包含,写情书的步骤
public class Contend {
private String askName;
public String getAskName() {
return askName;
}
public void setAskName(String askName) {
this.askName = askName;
}
public String getPairse() {
return pairse;
}
public void setPairse(String pairse) {
this.pairse = pairse;
}
public String getExpress() {
return express;
}
public void setExpress(String express) {
this.express = express;
}
public String getCommunication() {
return communication;
}
public void setCommunication(String communication) {
this.communication = communication;
}
private String pairse;
private String express;
private String communication;
}
Builder类创建对象
public interface Builder {
void buildAskName();
void buildParise();
void buildExpress();
void buildCommunication();
Contend createContent();
}
BoyBuilder类实例化创建对象
//具体的builder类
public class BoyBuilder implements Builder{
private Contend Boycontend;
public BoyBuilder(){
this.Boycontend = new Contend();
}
@Override
public void buildAskName() {
// TODO Auto-generated method stub
this.Boycontend.setAskName("BOY称呼对方");
System.out.println("BOY称呼对方");
}
@Override
public void buildCommunication() {
// TODO Auto-generated method stub
this.Boycontend.setPairse("BOY赞美对方");
System.out.println("BOY赞美对方");
}
@Override
public void buildExpress() {
// TODO Auto-generated method stub
this.Boycontend.setExpress("BOY表白");
System.out.println("BOY表白");
}
@Override
public void buildParise() {
// TODO Auto-generated method stub
this.Boycontend.setCommunication("BOY约会");
System.out.println("BOY约会");
}
@Override
public Contend createContent() {
// TODO Auto-generated method stub
return this.Boycontend;
}
}
ManBuilder具体实例化对象
public class ManBuilder implements Builder {
private Contend manBuilder;
public ManBuilder(){
this.manBuilder = new Contend();
}
@Override
public void buildAskName() {
// TODO Auto-generated method stub
System.out.println("man叫名字");
}
@Override
public void buildCommunication() {
// TODO Auto-generated method stub
System.out.println("man叫约会");
}
@Override
public void buildExpress() {
// TODO Auto-generated method stub
System.out.println("man叫表白");
}
@Override
public void buildParise() {
// TODO Auto-generated method stub
System.out.println("man叫称赞");
}
@Override
public Contend createContent() {
// TODO Auto-generated method stub
return this.manBuilder;
}
}
Director指导生产
//负责指导生成动作组装
public class Director {
public Contend createContendByDirector(Builder builder){
builder.buildAskName();
builder.buildParise();
builder.buildExpress();
builder.buildCommunication();
return builder.createContent();
}
}
Test测试类
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//指导者,组合动作
Director director = new Director();
Contend createContendByDirector = director.createContendByDirector(new BoyBuilder());
Contend manBuilder = director.createContendByDirector(new ManBuilder());
System.out.println(createContendByDirector);
System.out.println(manBuilder);
}
}
结果如下: