Java--设计模式-13-建造者模式

简介: 建造者模式(Builder Pattern)属于创建型模式,也是一种创建对象的方式。其目的就是将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。原理就是使用多个简单的对象一步一步构建成一个复杂的对象。

建造者模式(Builder Pattern)属于创建型模式,也是一种创建对象的方式。其目的就是将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。原理就是使用多个简单的对象一步一步构建成一个复杂的对象。

       其实我一直叫的是构建者模式,哈哈!在日常开发中也经常能见到使用建造者模式,比如Java中的StringBuilder,net包里的URL请求等等。前面MyBatis Plus中也使用到过,有兴趣可以翻翻。

       现在我们要组装一台电脑,电脑必须有cpu和主板,还有键盘、鼠标等配件,我们用建造者模式一步一步构建一台电脑出来。

代码实现:

创建一个电脑类:

packagecom.xing.design.builder;
/*** 电脑* @author xing*/publicclassComputer {
privateStringcpu;//cpu 必须privateStringmain;//主板 必须privateStringmouse;//鼠标privateStringkeyBoard;//键盘privateStringshow;//显示器publicComputer(Builderbuilder) {
this.cpu=builder.cpu;
this.mouse=builder.mouse;
this.keyBoard=builder.keyBoard;
this.show=builder.show;
this.main=builder.main;
  }
publicStringgetCpu() {
returncpu;
  }
publicvoidsetCpu(Stringcpu) {
this.cpu=cpu;
  }
publicStringgetMain() {
returnmain;
  }
publicvoidsetMain(Stringmain) {
this.main=main;
  }
publicStringgetMouse() {
returnmouse;
  }
publicvoidsetMouse(Stringmouse) {
this.mouse=mouse;
  }
publicStringgetKeyBoard() {
returnkeyBoard;
  }
publicvoidsetKeyBoard(StringkeyBoard) {
this.keyBoard=keyBoard;
  }
publicStringgetShow() {
returnshow;
  }
publicvoidsetShow(Stringshow) {
this.show=show;
  }
@OverridepublicStringtoString() {
return"Computer [cpu="+cpu+", main="+main+", mouse="+mouse+", keyBoard="+keyBoard+", show="+show+"]";
  }
// 静态内部类publicstaticclassBuilder{
privateStringcpu;//cpuprivateStringmouse;//鼠标privateStringkeyBoard;//键盘privateStringshow;//显示器privateStringmain;//主板publicBuilder(Stringcpu, Stringmain) {
//主板和cpu必不可少this.cpu=cpu;
this.main=main;
    }
//剩下的可选属性可自由复制publicBuildersetMouse(Stringmouse) {
this.mouse=mouse;
returnthis;
    }
publicBuildersetKeyBoard(StringkeyBoard) {
this.keyBoard=keyBoard;
returnthis;
    }
publicBuildersetShow(Stringshow) {
this.show=show;
returnthis;
    }
// 返回Computer对象publicComputerbuild() {
returnnewComputer(this);
    }
  }
}

       在正常的一个电脑类中,新加了一个静态内部类Builder,将要构建的属性复制一份给构建类,并且每次调用构建类中的set值方法都返回本对象,最后给一个build()来new一个电脑对象返回,这样直接就可以生成一个电脑类的实例对象啦。

调用端代码:

packagecom.xing.design.builder;
publicclassBuilderDemo {
publicstaticvoidmain(String[] args) {
Computercomputer1=newComputer.Builder("酷睿","飞腾主板").build();
System.out.println("组装电脑1->"+computer1);
Computercomputer2=newComputer.Builder("酷睿","飞腾主板")
        .setKeyBoard("机械键盘")
        .setMouse("逻辑鼠标")
        .setShow("三星显示器")
        .build();
System.out.println("组装电脑2->"+computer2);
  }
}

测试结果:

image.png

       可以看到我们链路式的一步一步构建除了一台电脑。



总结:

       建造者模式就是将一个复杂对象的构建与表示分离,一步一步链路式的构建出目标对象。

       上述是使用的静态内部类,也可以将构建类抽象出来,使用独立于其他对象的Builder 类来管理对象的构建过程,将变化与不常变化的过程分开,便于维护与扩展。


END

目录
相关文章
|
10月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
1086 157
|
10月前
|
设计模式 Java Spring
Java 设计模式之责任链模式:优雅处理请求的艺术
责任链模式通过构建处理者链,使请求沿链传递直至被处理,实现发送者与接收者的解耦。适用于审批流程、日志处理等多级处理场景,提升系统灵活性与可扩展性。
928 2
|
12月前
|
设计模式 缓存 Java
Java设计模式(二):观察者模式与装饰器模式
本文深入讲解观察者模式与装饰器模式的核心概念及实现方式,涵盖从基础理论到实战应用的全面内容。观察者模式实现对象间松耦合通信,适用于事件通知机制;装饰器模式通过组合方式动态扩展对象功能,避免子类爆炸。文章通过Java示例展示两者在GUI、IO流、Web中间件等场景的应用,并提供常见陷阱与面试高频问题解析,助你写出灵活、可维护的代码。
|
设计模式 Java Apache
【设计模式】【创建型模式】建造者模式(Builder)
一、入门 什么是建造者模式? 建造者模式(Builder Pattern)是一种创建型设计模式,用于逐步构建复杂对象。 它通过将对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。 为什么
855 14
|
10月前
|
设计模式 算法 搜索推荐
Java 设计模式之策略模式:灵活切换算法的艺术
策略模式通过封装不同算法并实现灵活切换,将算法与使用解耦。以支付为例,微信、支付宝等支付方式作为独立策略,购物车根据选择调用对应支付逻辑,提升代码可维护性与扩展性,避免冗长条件判断,符合开闭原则。
2577 35
|
设计模式 缓存 安全
【高薪程序员必看】万字长文拆解Java并发编程!(8):设计模式-享元模式设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的经典对象复用设计模式-享元模式,废话不多说让我们直接开始。
278 0
|
10月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
661 8
|
12月前
|
设计模式 安全 Java
Java设计模式(一):单例模式与工厂模式
本文详解单例模式与工厂模式的核心实现及应用,涵盖饿汉式、懒汉式、双重检查锁、工厂方法、抽象工厂等设计模式,并结合数据库连接池与支付系统实战案例,助你掌握设计模式精髓,提升代码专业性与可维护性。
|
12月前
|
设计模式 XML 安全
Java枚举(Enum)与设计模式应用
Java枚举不仅是类型安全的常量,还具备面向对象能力,可添加属性与方法,实现接口。通过枚举能优雅实现单例、策略、状态等设计模式,具备线程安全、序列化安全等特性,是编写高效、安全代码的利器。
|
设计模式 Java 数据安全/隐私保护
Java 设计模式:装饰者模式(Decorator Pattern)
装饰者模式属于结构型设计模式,允许通过动态包装对象的方式为对象添加新功能,提供比继承更灵活的扩展方式。该模式通过组合替代继承,遵循开闭原则(对扩展开放,对修改关闭)。