建造者模式

一、大致构造

1、导演者类

2、建造抽象类

3、产品抽象类

4、产品具体类

5、建造具体类

二、代码(建造模式,相当于将一堆零件组装成一个对象)

1、建造抽象类

Builder.java

package com.builderModel;

public interface Builder {

    public void BuildPart1();
    public void BuildPart2();
    public Product getProduct();
    
}

2、产品标识类

package com.builderModel;

public interface Product {

}

3、具体产品类

Article.java

package com.builderModel;

public class Article implements Product {

    private String title;
    
    private String content;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    @Override
    public String toString() {
        return "Article [title=" + title + ", content=" + content + "]";
    }
    
    
    
}

AutoMessage.java

package com.builderModel;

public class AutoMessage implements Product {

    private String from;
    
    private String content;

    public String getFrom() {
        return from;
    }

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

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    @Override
    public String toString() {
        return "Message [from=" + from + ", content=" + content + "]";
    }
    
    
    
    
}

4、具体产品构造者

ArticleBuilder.java

package com.builderModel;

public class ArticleBuilder implements Builder {
    
    Article article = new Article();

    @Override
    public void BuildPart1() {
        article.setTitle("hello");
        
    }

    @Override
    public void BuildPart2() {
        article.setContent("world");
    }

    @Override
    public Product getProduct() {
        return article;
    }

}

AutoMessageBuilder.java

package com.builderModel;

public class AutoMessageBuilder implements Builder {
    
    private AutoMessage message = new AutoMessage();

    @Override
    public void BuildPart1() {
        message.setFrom("客户");
    }

    @Override
    public void BuildPart2() {
        message.setContent("你的网页出错了");
    }

    @Override
    public Product getProduct() {
        
        return message;
    }

}

5、导演者类

Director.java

package com.builderModel;

public class Director {
    private Builder builder = null;
    
    public Director(Builder builder) {
        this.builder = builder;
        this.builder.BuildPart1();
        this.builder.BuildPart2();
        
    }
    
    public Product getProduct() {
        return this.builder.getProduct();
    }        
}

6、测试类

Test.java

package com.builderModel;

public class Test {
    
    
    public static void main(String[] args) {
        
        Builder builder = new AutoMessageBuilder();
        
        Director director = new Director(builder);
        
        AutoMessage autoMessage = (AutoMessage) director.getProduct();
        
        System.out.println(autoMessage.toString());
        
    }

}
原文地址:https://www.cnblogs.com/honger/p/5961959.html