• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
思想人生从关注生活开始
博客园    首页    新随笔    联系   管理    订阅  订阅

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

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();

}

}

posted @ 2023-03-02 19:41  JackYang  阅读(115)  评论(2)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3