【设计模式】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一步一步调试,还有就是多看看别人的例子。能够有助于理解!谢谢各位观看指点!❤️ ❤️ ❤️

posted @ 2022-09-05 16:27  怒放吧德德  阅读(138)  评论(0编辑  收藏  举报