大话设计模式之-建造者模式

建造者模式:主要用于将一个复杂对象的构建与它的组成分离开,对象的内部组成顺序通常面临着复杂的变化。
与工厂模式的区别:建造者模式是将不同的产品组合在一起,工厂模式经常用于创建单个类的模式,建造者模式是将多个属性组合在一起,也就是是复合类组成的复杂对象。
1.Product:要创建的复杂对象
2.Builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建
3.ConcreteBuilder:实现具体的builder接口,针对不同的业务模型实例化接口,实现不同的业务需求
4.Director:调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建。
下面以肯德基套餐来说明
一份KFC套餐里面包含汉堡、可乐、薯条、炸鸡翅,其组合不同。
product

package com.test;  
public class Product {
	private String hamburg;
	private String cola;
	private String chips;
	private String wings;
	public String getHamburg() {
		return hamburg;
	}
	public void setHamburg(String hamburg) {
		this.hamburg = hamburg;
	}
	public String getCola() {
		return cola;
	}
	public void setCola(String cola) {
		this.cola = cola;
	}
	public String getChips() {
		return chips;
	}
	public void setChips(String chips) {
		this.chips = chips;
	}
	public String getWings() {
		return wings;
	}
	public void setWings(String wings) {
		this.wings = wings;
	}	
}

Builder

public interface BuilderProduct {
	void buildHamburg();
	void buildCola();
	void buildChip();
	void buildWing();
	Product buildProduct();
}

ConcreteBuilder

public class ConcreteBuilderProduct implements BuilderProduct{
	Product product=new Product();
	@Override
	public void buildHamburg() {
		
		product.setHamburg("1个humburg");
	}
	@Override
	public void buildCola() {
		product.setCola("1杯可乐");
		
	}
	@Override
	public void buildChip() {
		product.setChips("2盒可乐");
		
	}
	@Override
	public void buildWing() {
		product.setWings("4只鸡翅");	
	}
	@Override
	public Product buildProduct() {
		return product;
	}
}

Director

 public class Director {
    	public Product constructProduct(ConcreteBuilderProduct pb){
    		pb.buildHamburg();
    		pb.buildCola();
    		pb.buildChip();
    		pb.buildWing();
    		return pb.buildProduct();
    	}
    }

测试

 public class Test {
    	 public static void main(String[] args) {
    		 Director pb=new Director();
    		 Product product=pb.constructProduct(new ConcreteBuilderProduct());
    		 System.out.println(product.getHamburg());
    	 }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值