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