亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

設計模式之建造者模式

標簽:
Java 架構

建造器模式与工厂方法类似,不过侧重点不同。工厂方法模式主要目的的组装一个产品,强调产品的初始化和设置。而建造器模式强调的是产品各部件的组装顺序(即方法调用的顺序)

产品类

产品类可以使用模板方法模式。也可以不用。

/**
 * 产品接口
 */
public abstract class Product {
    // A 步骤
    abstract public void stepA();
    // B 步骤
    abstract public void stepB();
}

/**
* X 产品
 */
public class ProductX extends Product {
    public void stepA(){}
    public void stepB(){}
    public void doSomething(){}
}

/**
 * Y产品
 */
public class ProductY extends Product {
    public void stepA(){}
    public void stepB(){}
    public void doSomething(){}
}
建造类

有多少个产品,就可以对应多少个建造器实现类。注意两个建造实现类的setPart方法内的组装顺序不同

/**
 * 建造器接口
 */
public abstract class Builder {
    // 设置产品的不同部分,以获得不同的产品
    public abstract void setPart();
    // 建造产品
    public abstract Product buildProduct();
}

/**
 * X 建造器
 */
public class ConcreteBuilderX extends Builder {

    private Product product = new ProductX();

    @Override
    public void setPart() {
        product.stepA();
        product.stepB();
    }

    @Override
    public Product buildProduct() {
        return product;
    }
}

/**
 * Y 建造器
 */
public class ConcreteBuilderY extends Builder {

    private Product product = new ProductX();

    @Override
    public void setPart() {
        product.stepB();
        product.stepA();
    }

    @Override
    public Product buildProduct() {
        return product;
    }
}
导演类

导演类的作用是使客户端不直接面向建造器类,降低系统的耦合性。一个导演类就足够了,里面管理着所有的建造器。

/**
 * 导演类
 */
public class Director {
    private Builder builderX = new ConcreteBuilderX();
    private Builder builderY = new ConcreteBuilderY();

    public Product getXProduct() {
        builderX.setPart();
        return (Product) builderX.buildProduct();
    }

    public Product getYProduct() {
        builderY.setPart();
        return (Product) builderY.buildProduct();
    }
}
點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
全棧工程師
手記
粉絲
7187
獲贊與收藏
186

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消