Java 建造者模式

本文通过一个温馨的故事介绍了Java建造者模式,讲述了如何将复杂对象的构建与表示分离,并提供了示例代码。故事中,学姐和学弟共同经历了一天,用建造者模式构建了他们的美好记忆。故事最后,两人讨论了写博客的不易,鼓励读者理解和学习设计模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


傻白甜学姐可爱的小故事引入

自上篇继续讲故事

学姐抱住了我吗?此时此刻,内心无比激动!

学姐的手真的很温暖,仿佛像做梦般一样!我扭过头来,看着学姐,就这样,睡了一夜。到了第二天,衣服还是有点潮湿!看来要等到中午了,我对学姐说道:“衣服还是有点潮湿,我去买早餐吧,你在这里等我!”,我便买了我最喜欢的早餐,牛奶加面包和一点三明治!当我回来时,一开门,学姐突然抱住了我,吓我一跳!这样的惊喜我很惊讶,我们吃完早餐也没有别的事情可干!于是就观赏起了鱼缸中的小蝌蚪,我们看的很痴迷,我对学姐说道:“小蝌蚪要找妈妈,你能不能帮帮它?”,学姐微微一笑:“能不能帮小蝌蚪找到它的妈妈我不知道,但是你的小蝌蚪我可以帮你找到它们的妈妈!待会儿咱们一起找,好不好?”,说完她指着我刚捡回来的那袋小蝌蚪,那是我在路上捡到的,正要去河边放生它们!唉,真不知道是谁这么狠心,把小蝌蚪丢在路边。

到了中午,学姐穿上衣服收拾好后,我们一起出门了,然后去到河边,把那袋小蝌蚪放生了!它们的妈妈竟然直接过来接它们了!我和学姐此时都很开心!

“正好星期天,去我家玩两天吧,离这里不远!”,我对学姐说道。学姐很开心的答应了,接着我们去超市买了点小零食,还有蔬菜,可以回家做饭。学姐很惊讶地说道:“忆难弟弟,原来你还会做饭呀!”,“哈哈,那是当然”!结账的时候,发现是295块钱,心里没多想,对学姐说,随便拿个糖吧!学姐便随手一拿,然后一起坐车往我家去!

到我家之后,我们开始过上我们的宅男、宅女生活,打开电视,拿过来平板电脑,让学姐坐在沙发上!然后我去做饭,接着我走进厨房,熟练地做起来了饭,做了最拿手的糖醋里脊、炒鸡蛋,两小碗酸辣粉!

<
### Java 建造者模式的实现与用法 建造者模式(Builder Pattern)是一种创建型设计模式,其目的是将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示[^1]。以下是关于建造者模式Java中的实现与用法的详细说明。 #### 1. 建造者模式的核心概念 建造者模式主要由以下几部分组成: - **Product(产品角色)**:表示被构建的复杂对象。 - **Builder(抽象建造者)**:为创建一个Product对象的各个部件指定抽象接口。 - **ConcreteBuilder(具体建造者)**:实现Builder接口,构建并装配该产品的各个部件。 - **Director(指挥者)**:构造一个使用Builder接口的对象[^2]。 #### 2. 示例代码解析 以下是一个简单的建造者模式实现示例: ```java // Product类 public class Actor { private String type; private String sex; private String face; private String costume; private String hairstyle; public void setType(String type) { this.type = type; } public void setSex(String sex) { this.sex = sex; } public void setFace(String face) { this.face = face; } public void setCostume(String costume) { this.costume = costume; } public void setHairstyle(String hairstyle) { this.hairstyle = hairstyle; } public String getType() { return type; } public String getSex() { return sex; } public String getFace() { return face; } public String getCostume() { return costume; } public String getHairstyle() { return hairstyle; } } ``` ```java // 抽象建造者 public abstract class ActorBuilder { protected Actor actor = new Actor(); public abstract void buildType(); public abstract void buildSex(); public abstract void buildFace(); public abstract void buildCostume(); public abstract void buildHairstyle(); public Actor createActor() { return actor; } } ``` ```java // 具体建造者 public class HeroBuilder extends ActorBuilder { @Override public void buildType() { actor.setType("英雄"); } @Override public void buildSex() { actor.setSex("男性"); } @Override public void buildFace() { actor.setFace("英俊"); } @Override public void buildCostume() { actor.setCostume("铠甲"); } @Override public void buildHairstyle() { actor.setHairstyle("短发"); } } ``` ```java // 指挥者 public class ActorController { public Actor construct(ActorBuilder ab) { ab.buildType(); ab.buildSex(); ab.buildFace(); ab.buildCostume(); ab.buildHairstyle(); return ab.createActor(); } } ``` ```java // 测试类 public class Client { public static void main(String[] args) { ActorBuilder builder = new HeroBuilder(); ActorController controller = new ActorController(); Actor hero = controller.construct(builder); System.out.println(hero.getType() + "的外观"); System.out.println("性别:" + hero.getSex()); System.out.println("面容:" + hero.getFace()); System.out.println("服装:" + hero.getCostume()); System.out.println("发型:" + hero.getHairstyle()); } } ``` 上述代码展示了如何通过建造者模式创建一个复杂的`Actor`对象。每个具体建造者负责构建不同类型的`Actor`,而指挥者`ActorController`则负责协调建造者的构建过程[^3]。 #### 3. 使用场景 建造者模式适用于以下场景: - 当需要创建复杂对象时,对象的构建过程独立于其表示。 - 当需要将对象的构建过程分解为多个步骤,并允许用户只通过指定必要的部分来构建对象时[^4]。 #### 4. 优点 - 将复杂对象的构建过程与其表示分离,使得相同的构建过程可以创建不同的表示。 - 提高了系统的灵活性和扩展性,便于维护和修改。 #### 5. 缺点 - 增加了系统的复杂性,引入了额外的类和对象。 - 如果产品对象的变化较为频繁,则可能导致需要频繁修改建造者类[^5]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

第三女神程忆难

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值