最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

建造者模式(Builder Pattern)

网站源码admin3浏览0评论

建造者模式(Builder Pattern)

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 删除产品对象客户端设计模式builder

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论