建造者模式(Java)

在建造者模式中,主要有四个角色
1 建造者(接口类),抽象出对象的构建过程
2 具体的建造者(实现建造者接口),实现不同的业务逻辑
3 指挥者,调用建造者来完成业务需求
4 产品,需要创建的对象

下面给出代码示例
Cai.java 建造者

package com.BuilderMode;

/**
 *  建造者Builder
 *
 * 给出一个抽象接口,以规范产品对象的各个组成成分的建造。
 * 这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建
 */
public interface Cai {
    public void fangyan(); // 放盐

    public void fangyou(); // 放油

    public void jiashui(); // 加水,,,等等是做菜不可缺少的步骤
}

Lisi.java 具体建造者

package com.BuilderMode;

/**
 * ConcreteBuilder 具体建造者
 * <p>
 * 实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。
 * 在建造过程完成后,提供产品的实例。
 */
public class LiSi implements Cai {
    public void fangyan() {
        System.out.println("LiSi fangyan");
    }

    public void fangyou() {
        System.out.println("LiSi fangyou");
    }

    public void jiashui() {
        System.out.println("LiSi Jiashui");
    }
}

Zhangsan.java 具体建造者

package com.BuilderMode;

/**
 *  ConcreteBuilder 具体建造者
 *
 *   实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。
 *   在建造过程完成后,提供产品的实例。
 */

public class ZhangSan implements Cai {
    public void fangyan() {
        System.out.println("ZhangSanfangyan");
    }

    public void fangyou() {
        System.out.println("ZhangSanfangyou");
    }

    public void jiashui() {
        System.out.println("ZhangJiashui");
    }
}

Director.java 指挥者

package com.BuilderMode;

/**
 *  Director 指导者
 *
 * 调用具体建造者来创建复杂对象的各个部分,
 * 在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建。
 */

public class Director {
    Cai cai;

    public Director(Cai cai) {
        this.cai = cai;
    }

    public void zuocai() {
        cai.fangyan();
        cai.fangyou();
        cai.jiashui();
    }
}

BuildModejava 产品

package com.BuilderMode;

/**
 * 使用建造者模式的好处:
 * <p>
 * 1.使用建造者模式可以使客户端不必知道产品内部组成的细节。
 * <p>
 * 2.具体的建造者类之间是相互独立的,对系统的扩展非常有利。
 * <p>
 * 3.由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。
 * <p>
 * 使用建造模式的场合:
 * <p>
 * 1.创建一些复杂的对象时,这些对象的内部组成构件间的建造顺序是稳定的,但是对象的内部组成构件面临着复杂的变化。
 * <p>
 * 2.要创建的复杂对象的算法,独立于该对象的组成部分,也独立于组成部分的装配方法时。
 */
public class BuilderMode {
    public static void test() {
        Cai cai = new ZhangSan();// 张三做菜
        Director d = new Director(cai); // 指挥者
        d.zuocai();// 我要指挥者弄菜,其实指挥者叫张三弄菜去了。
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值