Java建造者模式
Meal:
public class Meal { private String food; private String drink; public void setFood(String food){ this.food = food; } public String getFood(){ return food; } public void setDrink(String drink){ this.drink = drink; } public String getDrink(){ return drink; } }
MealBuilder:
public abstract class MealBuilder { private Meal meal = new Meal(); public abstract void buildFood(); public abstract void buildDrink(); public Meal getMeal(){ return meal; } }
SubMealBuilderA:
public class SubMealBuilderA extends MealBuilder { @Override public void buildFood() { System.out.println("This is SubMealBuilderA food!"); } @Override public void buildDrink() { System.out.println("This is SubMealBuilderA Drink!"); } }
SubMealBuilderB:
public class SubMealBuilderB extends MealBuilder{ @Override public void buildFood() { System.out.println("This is SubMealBuilderB food!"); } @Override public void buildDrink() { System.out.println("This is SubMealBuilderB drink!"); } }
KFCWaiter:
public class KFCWaiter { private MealBuilder mb = null; public KFCWaiter(){ } public KFCWaiter(MealBuilder mb){ this.mb = mb; } public void setMealBuilder(MealBuilder mb){ this.mb = mb; } public Meal construct(){ mb.buildDrink(); mb.buildFood(); return mb.getMeal(); } }
BuilderMethod(调用):
public class BuilderMethod{ public static void main(String[] args){ MealBuilder mb_1 = new SubMealBuilderA(); MealBuilder mb_2 = new SubMealBuilderB(); KFCWaiter kfc = null; kfc = new KFCWaiter(mb_1); kfc.construct(); kfc = new KFCWaiter(mb_2); kfc.construct(); } }
Result:
This is SubMealBuilderA Drink!
This is SubMealBuilderA food!
This is SubMealBuilderB drink!
This is SubMealBuilderB food!
分类:
Design Pattern
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 从零开始开发一个 MCP Server!
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档