java设计模式----建造者模式
目录
一、什么是建造者模式
建造者模式它分离对象子组件的单独构造和装配。从而可以构造出复杂的对象。
由于实现了构造和装配的解耦。不同的构造器,相同的装配,可以构建出不同的对象。相同的构建器,不同的装配顺序也可以构建出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。
二、建造者模式的简单实现(造飞机为例)
假设一个飞机对象的模型如下:
对飞机对象而言,组装一架飞机需要座位对象、机舱对象、引擎对象。
以下是各对象的实体类:

package builder; /** * 飞机实体类 */ public class Aircraft { //发动机 private AirEngine airEngine; //座位 private AirSeat airSeat; //机舱 private AirRoom airRoom; public AirEngine getAirEngine() { return airEngine; } public void setAirEngine(AirEngine airEngine) { this.airEngine = airEngine; } public AirSeat getAirSeat() { return airSeat; } public void setAirSeat(AirSeat airSeat) { this.airSeat = airSeat; } public AirRoom getAirRoom() { return airRoom; } public void setAirRoom(AirRoom airRoom) { this.airRoom = airRoom; } } /** * 飞机发动机实体类 */ class AirEngine{ private String engine; public String getEngine() { return engine; } public void setEngine(String engine) { this.engine = engine; } } /** * 飞机座位实体类 */ class AirSeat{ private String seat; public String getSeat() { return seat; } public void setSeat(String seat) { this.seat = seat; } } /** * 飞机机舱实体类 */ class AirRoom{ private String room; public String getRoom() { return room; } public void setRoom(String room) { this.room = room; } }
生产一架飞机需要座位、机舱、引擎等零件
以下是各零件的构建:
package builder; /** * 生产飞机零件接口 */ public interface AircraftBuilder { AirRoom AirRoomBuild(); AirEngine AirEngineBuild(); AirSeat AirSeatBuild(); }

接下来将由组装者组装一架飞机了
package builder; /** * 组装飞机接口 */ public interface AircraftDirector { Aircraft DirectorAircraft(); }

1 package builder; 2 3 /** 4 * 组装飞机实现类 5 */ 6 public class MyAircraft implements AircraftDirector{ 7 private AircraftBuilder aircraftBuilder; 8 @Override 9 public Aircraft DirectorAircraft() { 10 Aircraft aircraft = new Aircraft(); 11 aircraft.setAirEngine(aircraftBuilder.AirEngineBuild()); 12 aircraft.setAirRoom(aircraftBuilder.AirRoomBuild()); 13 aircraft.setAirSeat(aircraftBuilder.AirSeatBuild()); 14 return aircraft; 15 } 16 17 public MyAircraft(AircraftBuilder aircraftBuilder) { 18 this.aircraftBuilder=aircraftBuilder; 19 } 20 }
以上,一架飞机就造好了。
客户使用方法
package builder; public class Click { public static void main(String[] args) { Aircraft aircraft = new MyAircraft(new MyAircraftBuilder()).DirectorAircraft(); System.out.println(aircraft.getAirEngine().getEngine()); System.out.println(aircraft.getAirRoom().getRoom()); System.out.println(aircraft.getAirSeat().getSeat()); } }
三、建造者模式使用场景
构造者模式通常更工厂模式混合使用。工厂负责生产零件,组装者通常用来组装零件。它主要用于构建一个复杂的对象。达到解耦和的目的。由于它构造一个产品需要的工序太多,所以不适合简单类的构建。
在实际开发场景中使用到构造者模式的有
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!