4、建造者模式

建造者模式(Builder Pattern) 又名生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。
建造者模式 是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节

public class Meal {
	    private String food;
	    private String drink;
	    public String getFood() {
	        return food;
	    }
	    public void setFood(String food) {
	        this.food = food;
	    }
	    public String getDrink() {
	        return drink;
	    }
	    public void setDrink(String drink) {
	        this.drink = drink;
	    }
}

public abstract class MealBuilder {
	    Meal meal = new Meal();
	    public abstract void buildFood();
	    public abstract void buildDrink();
	    public Meal getMeal(){
	        return meal;
	    }
	}

public class MealA extends MealBuilder{
	    public void buildDrink() {
	        meal.setDrink("可乐");
	    }
	    public void buildFood() {
	        meal.setFood("薯条");
	    }
	}
public class MealB extends MealBuilder{
	    public void buildDrink() {
	        meal.setDrink("柠檬果汁");
	    }
	    public void buildFood() {
	        meal.setFood("鸡翅");
	    }
	}
public class KFCWaiter {
	    private MealBuilder mealBuilder;
	    public KFCWaiter(MealBuilder mealBuilder) {
	        this.mealBuilder = mealBuilder;
	    }
	    public Meal construct(){
	        mealBuilder.buildFood();//准备食物
	        mealBuilder.buildDrink();//准备饮料
	        return mealBuilder.getMeal(); //准备完毕,返回一个完整的套餐给客户
	    }
	}

public class Test {
	    public static void main(String[] args) {
	        MealA a = new MealA();  //套餐A
	        KFCWaiter waiter = new KFCWaiter(a);//准备套餐A的服务员
	        Meal mealA = waiter.construct();   //获得套餐   
	        System.out.print("套餐A的组成部分:");
	        System.out.println("食物:"+mealA.getFood()+";   "+"饮品:"+mealA.getDrink());
	    }
	}

应用
1.StringBuilder 中的 append 方法使用了建造者模式
2.mybatis 中的建造者模式
org.apache.ibatis.session 包下的 SqlSessionFactoryBuilder 类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值