日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

設(shè)計(jì)模式——構(gòu)造者模式

 Coder編程 2020-07-06

構(gòu)造器模式_組裝復(fù)雜實(shí)例(逐步構(gòu)造出一個(gè)復(fù)雜的實(shí)例

 

/**
 * 指揮者
 * @author maikec
 * @date 2019/5/11
 */
public class Director {
    private final AbstractBuilder builder;
    public Director(AbstractBuilder builder){
        this.builder = builder;
    }
    public void builderMessage(){
        builder.createHead();
        builder.createBody();
        builder.signature();
    }
}

/**
 * 抽象構(gòu)造器
 * @author maikec
 * @date 2019/5/11
 */
public abstract class AbstractBuilder {
    protected Message message;
    protected Head head;
    protected Body body;
    protected Author author;
    /**
     * 創(chuàng)建消息頭部
     * @return
     */
    protected abstract Head createHead();

    /**
     * 創(chuàng)建消息體
     * @return
     */
    protected abstract Body createBody();

    /**
     * 署名
     * @return
     */
    protected abstract Author signature();

    public Message getMessage(){
        return message;
    }
}

/**
 * @author maikec
 * @date 2019/5/11
 */
public class Message {
    private Head head;
    private Body body;
    private Author author;
    public Message(){}
    public Message(Head head,Body body,Author author){
        this.head = head;
        this.body = body;
        this.author = author;
    }

    @Override
    public String toString() {
         super.toString();
         if (head !=null || body != null || author != null){
             StringBuffer sb = new StringBuffer( "[" );
             if (head != null){
                 sb.append( head.toString() );
             }
             if (body != null){
                 sb.append( body.toString() );
             }
             if (author != null){
                 sb.append( author.toString() );
             }
             sb.append( "]" );
             return sb.toString();
         }
         return null;
    }
}

/**
 * @author maikec
 * @date 2019/5/11
 */
public class Head {
    private String name;
    public Head(){}
    public Head(String name){
        this.name = name;
    }
    @Override
    public String toString() {
        super.toString();
        return name == null ? "Head" : name;
    }
}

/**
 * @author maikec
 * @date 2019/5/11
 */
public class Body {
    private String name;
    public Body(){}
    public Body(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
         super.toString();
         return name == null ? "Body" : name;
    }
}

/**
 * @author maikec
 * @date 2019/5/11
 */
public class Author {
    private String name;
    public Author(){}
    public Author(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
         super.toString();
         return name == null ? "Author" : name;
    }
}

/**
 * Email構(gòu)造器
 * @author maikec
 * @date 2019/5/11
 */
public class EmailBuilder extends AbstractBuilder {
    @Override
    protected Head createHead() {
         head = new Head("Email Head");
         return head;
    }

    @Override
    protected Body createBody() {
        body = new Body("Email Body");
        return body;
    }

    @Override
    protected Author signature() {
        author =  new Author("maikec");
        return author;
    }

    @Override
    public Message getMessage() {
        return new Message( head,body,author );
    }
}

附錄

github.com/maikec/patt… 個(gè)人GitHub設(shè)計(jì)模式案例

聲明

引用該文檔請(qǐng)注明出處

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多