首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >建造者模式(Builder Pattern)-23种常用设计模式快速入门教程

建造者模式(Builder Pattern)-23种常用设计模式快速入门教程

作者头像
jack.yang
发布2025-04-05 20:36:04
发布2025-04-05 20:36:04
1830
举报

1.建造者模式定义

建造者模式是一种创建型设计模式,它将一个复杂的构造过程封装到一个接口,使得该接口用于复杂对象的创建,建造者模式可以使客户端不必知道产品内部组成的细节。

2.建造者模式优点

它可以使客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象。

3.建造者模式缺点

建造者模式所创建的产品一般具有较多的共同点,其组成部分相似,如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制。 

4.建造者模式示例代码

传统设计模式讲解时使用的示例代码,大都采用与读者日常生活接解的业务系统没有多大关联关系。以致大部分读者无法做到学以致用,学完就忘记。本文采用使用日常生活中随处可见的优惠券业务来编写实现代码:

//建造者模式的抽象建造者类

public abstract class CouponBuilder {

public abstract void buildType();

public abstract void buildDiscount();

public abstract void buildExpiryDate();

public abstract Coupon getResult();

}

//建造者模式的具体建造者类

public class ConcreteBuilder extends CouponBuilder {

private Coupon coupon;

public ConcreteBuilder() {

coupon = new Coupon();

}

@Override

public void buildType() {

coupon.setType("discount");

}

@Override

public void buildDiscount() {

coupon.setDiscount(0.8);

}

@Override

public void buildExpiryDate() {

coupon.setExpiryDate("2020-12-31"); }

@Override

public Coupon getResult() {

return coupon; }

}

//建造者模式的指挥者类

public class Director {

private CouponBuilder couponBuilder;

public Director(CouponBuilder couponBuilder) {

this.couponBuilder = couponBuilder;

}

public void construct() {

couponBuilder.buildType();

couponBuilder.buildDiscount();

couponBuilder.buildExpiryDate();

}

}

//建造者模式的客户端使用

public class Client {

public static void main(String[] args) {

ConcreteBuilder concreteBuilder = new ConcreteBuilder();

Director director = new Director(concreteBuilder);

director.construct();

Coupon coupon = concreteBuilder.getResult();

}

}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.建造者模式定义
  • 2.建造者模式优点
  • 3.建造者模式缺点
  • 4.建造者模式示例代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档