【设计模式】Java设计模式 – 建造者模式

? 不断学习才是王道
? 继续踏上学习之路,学之分享笔记
? 总有一天我也能像各位大佬一样
? @一个有梦有戏的人 @怒放吧德德
?分享学习心得,欢迎指正,大家一起学习成长!

虽然很疲倦,但也要坚持学习!!!

目录

  • 【设计模式】Java设计模式 – 建造者模式
    • 简介
    • 建造者模式实例
      • ①、定义配置类
      • ②、定义构建类
      • ③、构建套票对象

简介

构建者是一种可以将复杂对象的构建和表示分离开来,从而使得一个构建过程可以生成多个不同的表示对象。建造者模式通过一步一步构建对象。
在构建对象可以通过new的方式或者工厂模式去实例化对象,但是有些对象就比较复杂,有些对象会不断的细分,并且不用类型的对象有不同的对象。倘若通过new或者工厂模式也会造成许多不变,由此可以通过Builder模式,既然集体构建比较复杂,那就一步一步的构建。

举个例子,就比如班车票,对于不同的对象有不同的优惠和规定。

通过配置类去统筹,在吧所有信息交给构建器去一个一个构建。等所有的票都构建完成之后,我们在通过构建器来构建套票对象。这样层层递进就会使得不这么复杂

建造者模式实例

本次实验通过配置类、构建类来完成,通过配置类做好各个方法来模拟对应票类的逻辑构造,通过构建器构建套票对象

①、定义配置类

通过不同的类型去构建不同的票类逻辑

package com.lyd.demo.builder.helper;/** * @Author: lyd * @Description: 票的配置类 * @Date: 2022-08-23 */public class TicketHelper {    public void buildAdult(String info) {        // TODO 编写逻辑        System.out.println("构建成年人票逻辑:" + info);    }    public void buildChildrenForSeat(String info) {        // TODO 编写逻辑        System.out.println("构建有座儿童票逻辑:" + info);    }    public void buildchildrenForSeat(String info) {        // TODO 编写逻辑        System.out.println("构建无座儿童票逻辑:" + info);    }    public void buildElderly(String info) {        // TODO 编写逻辑        System.out.println("构建老年人票逻辑:" + info);    }    public void buildSoldier(String info) {        // TODO 编写逻辑        System.out.println("构建军人及其家属票逻辑:" + info);    }}

②、定义构建类

Builder类比较简单,只有一个helper类,但是可以获得套票中的所有信息,从而构建出套票对象

package com.lyd.demo.builder;import com.lyd.demo.builder.helper.TicketHelper;/** * @Author: lyd * @Description: 构建类 * @Date: 2022-08-23 */public class TickerBuilder {    public static Object builder(TicketHelper helper) {        // TODO 构建逻辑        System.out.println("通过TickerBuilder构建票信息");        return null; // 返回票的对象    }}

③、构建套票对象

通过TicketHelper去构建信息,在通过builder去构建出对象。

package com.lyd.demo.builder.test;import com.lyd.demo.builder.TickerBuilder;import com.lyd.demo.builder.helper.TicketHelper;/** * @Author: lyd * @Description: 测试类 * @Date: 2022-08-20 */public class TickerBuilderTest {    public static void main(String[] args) {        TicketHelper helper = new TicketHelper();        helper.buildAdult("成人票");        helper.buildChildrenForSeat("有座儿童票");        helper.buildchildrenForSeat("无座儿童票");        helper.buildElderly("老人票");        helper.buildSoldier("军人票");        Object ticker = TickerBuilder.builder(helper);    }}

运行结果:

?德德小建议:

理解设计模式不是一件简单的事情,需要不断的学习和动手去练习,才能理解。只有掌握好设计模式,才能够真正的理解SpringAOP和Mybatis的底层原理。各位读者可以和我一样,动手敲一敲代码,甚至用不同的例子来做,通过debug一步一步调试,还有就是多看看别人的例子。能够有助于理解!谢谢各位观看指点!❤️ ❤️ ❤️