概述
建造者模式:主要用于将一个复杂对象的构建与它的组成分离开,对象的内部组成顺序通常面临着复杂的变化。
与工厂模式的区别:建造者模式是将不同的产品组合在一起,工厂模式经常用于创建单个类的模式,建造者模式是将多个属性组合在一起,也就是是复合类组成的复杂对象。
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());
}
}
最后
以上就是迷你过客为你收集整理的大话设计模式之-建造者模式的全部内容,希望文章能够帮你解决大话设计模式之-建造者模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复