java设计模式—建造者模式
一.概述
建造模式是指将多个简单的子模块一步一步构建成一个复杂的对象。在构建这个复杂对象时,可以根据不同的业务,选择不同的子模块,并且在构建的过程中,隐藏了子模块的内部逻辑。
二.模式示例:
我们以购物流程中的选择商品,填写收货人信息,在线支付为例,具体讲解模式的实现
1.创建订单抽象类
public abstract class OrderBuilder {
//第一步:选择商品
//声明为抽象方法,具体由子类实现
public abstract void selectGoods();
//第二步:设置收货人信息,如:地址,电话等
//声明为抽象方法,具体由子类实现
public abstract void setBuyerInfo();
//第三步:在线支付
//声明为抽象方法,具体由子类实现
public abstract void payment();
//第四步:获取订单信息
//声明为抽象方法,具体由子类实现
public abstract OrderInfo createOrder();
}
2.创建订单具体实现类
public class OrderCreater extends OrderBuilder{
private OrderInfo orderInfo = new OrderInfo();
@Override
public void selectGoods() {
orderInfo.setGoodsName("联想笔记本");
}
@Override
public void setBuyerInfo() {
orderInfo.setBuyerAddr("花果山001号");
}
@Override
public void payment() {
orderInfo.setPaymentName("alipay");
orderInfo.setOrderAmout(5000);
}
@Override
public OrderInfo createOrder() {
this.selectGoods();
this.setBuyerInfo();
this.payment();
return orderInfo;
}
}
3.创建订单信息类。
public class OrderInfo implements Serializable{
private static final long serialVersionUID = 1L;
private String goodsName;
private String buyerAddr;
private int orderAmout;
private String paymentName;
public String getGoodsName() {
return goodsName;
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
public String getBuyerAddr() {
return buyerAddr;
}
public void setBuyerAddr(String buyerAddr) {
this.buyerAddr = buyerAddr;
}
public int getOrderAmout() {
return orderAmout;
}
public void setOrderAmout(int orderAmout) {
this.orderAmout = orderAmout;
}
public String getPaymentName() {
return paymentName;
}
public void setPaymentName(String paymentName) {
this.paymentName = paymentName;
}
@Override
public String toString(){
return "goods:" + this.goodsName + " buyerAddr:" + this.buyerAddr;
}
}
4.模式调用。
public class Test {
public static void main(String args[]){
OrderBuilder order = new OrderCreater();
OrderInfo orderInfo = order.createOrder();
System.out.println(orderInfo.toString());
}
}