深度网营销型网站建设公司怎么样,网站单页制作教程,体育西网站开发定制,06628 网页制作与网站建设建造者模式#xff1a;构建复杂对象的精妙设计 设计模式的分类和应用场景总结建造者模式#xff1a;构建复杂对象的精妙设计建造者模式的核心思想建造者模式的参与者Java示例#xff1a;建造者模式 设计模式的分类和应用场景总结 可以查看专栏设计模式#xff1a;设计模式 … 建造者模式构建复杂对象的精妙设计 设计模式的分类和应用场景总结建造者模式构建复杂对象的精妙设计建造者模式的核心思想建造者模式的参与者Java示例建造者模式 设计模式的分类和应用场景总结 可以查看专栏设计模式设计模式 建造者模式构建复杂对象的精妙设计 建造者模式是一种创建型设计模式用于构建复杂对象。它将对象的构建过程与其表示分离允许您以可控和可扩展的方式构建对象。在本文中我们将深入探讨建造者模式解释其核心概念并提供Java示例代码来演示如何使用建造者模式。 建造者模式的核心思想
建造者模式的核心思想是将一个复杂对象的构建过程分为多个步骤每个步骤由一个独立的建造者对象负责完成。最终这些建造者协同工作按顺序构建出一个完整的对象。
通过使用建造者模式您可以在构建对象时灵活地添加、修改或删除步骤而不会影响其他部分的代码。这种分离的方式有助于管理复杂对象的构建提高可维护性和可读性。
建造者模式的参与者
建造者模式包含以下主要参与者 产品Product要构建的复杂对象。产品通常包含多个属性和方法。 抽象建造者Builder定义了构建产品各个部分的接口。每个部分都有一个对应的建造方法。 具体建造者Concrete Builder实现了抽象建造者接口负责构建产品的各个部分。每个具体建造者都可以构建出不同类型的产品。 指挥者Director负责调用具体建造者的方法按照一定的顺序构建产品。指挥者知道如何构建一个完整的产品。
Java示例建造者模式
让我们通过一个简单的Java示例来演示建造者模式。我们将构建一个Meal对象包括主食、饮料和甜点。
// 产品类
class Meal {private String mainCourse;private String beverage;private String dessert;public void setMainCourse(String mainCourse) {this.mainCourse mainCourse;}public void setBeverage(String beverage) {this.beverage beverage;}public void setDessert(String dessert) {this.dessert dessert;}public void describe() {System.out.println(Main Course: mainCourse);System.out.println(Beverage: beverage);System.out.println(Dessert: dessert);}
}// 抽象建造者接口
interface MealBuilder {void buildMainCourse();void buildBeverage();void buildDessert();Meal getMeal();
}// 具体建造者实现
class VegMealBuilder implements MealBuilder {private Meal meal new Meal();Overridepublic void buildMainCourse() {meal.setMainCourse(Vegetarian Burger);}Overridepublic void buildBeverage() {meal.setBeverage(Water);}Overridepublic void buildDessert() {meal.setDessert(Fruit Salad);}Overridepublic Meal getMeal() {return meal;}
}class NonVegMealBuilder implements MealBuilder {private Meal meal new Meal();Overridepublic void buildMainCourse() {meal.setMainCourse(Chicken Burger);}Overridepublic void buildBeverage() {meal.setBeverage(Coke);}Overridepublic void buildDessert() {meal.setDessert(Chocolate Cake);}Overridepublic Meal getMeal() {return meal;}
}// 指挥者
class Waiter {private MealBuilder mealBuilder;public Waiter(MealBuilder mealBuilder) {this.mealBuilder mealBuilder;}public Meal constructMeal() {mealBuilder.buildMainCourse();mealBuilder.buildBeverage();mealBuilder.buildDessert();return mealBuilder.getMeal();}
}public class BuilderPatternExample {public static void main(String[] args) {MealBuilder vegMealBuilder new VegMealBuilder();MealBuilder nonVegMealBuilder new NonVegMealBuilder();Waiter waiter1 new Waiter(vegMealBuilder);Meal vegMeal waiter1.constructMeal();System.out.println(Veg Meal:);vegMeal.describe();Waiter waiter2 new Waiter(nonVegMealBuilder);Meal nonVegMeal waiter2.constructMeal();System.out.println(Non-Veg Meal:);nonVegMeal.describe();}
}在这个示例中我们创建了一个Meal类作为产品。然后我们定义了抽象建造者接口MealBuilder并创建了两个具体建造者VegMealBuilder和NonVegMealBuilder它们分别构建了不同类型的餐点。最后我们有一个Waiter类作为指挥者它知道如何构建不同类型的餐点。
通过建造者模式我们能够以可控和可扩展的方式构建不同类型的餐点而不会使构建过程变得混乱。这提供了更好的灵活性和可维护性尤其在构建复杂对象时非常有用。 版权声明 原创博主牛哄哄的柯南 博主原文链接https://keafmd.blog.csdn.net/ 个人博客链接https://www.keafmd.top/ 看完如果对你有帮助感谢点击下面的点赞支持 [哈哈][抱拳] 加油
共同努力
Keafmd
感谢支持牛哄哄的柯南期待你的三连关注~~
keep accumulate for my dream【共勉】 ↓ ↓ ↓ ↓ ↓ ↓