java23设计模式创建者模式

package com.bjsxt.builder; /** * 尚学堂牌宇宙飞船 * @author 尚学堂高淇 www.sxt.cn * */ public class AirShip { private OrbitalModule orbitalModule; //轨道舱 private Engine engine; //发动机 private EscapeTower escapeTower; //逃逸塔 public void launch(){ System.out.println("发射!"); } public OrbitalModule getOrbitalModule() { return orbitalModule; } public void setOrbitalModule(OrbitalModule orbitalModule) { this.orbitalModule = orbitalModule; } public Engine getEngine() { return engine; } public void setEngine(Engine engine) { this.engine = engine; } public EscapeTower getEscapeTower() { return escapeTower; } public void setEscapeTower(EscapeTower escapeTower) { this.escapeTower = escapeTower; } } class OrbitalModule{ private String name; public OrbitalModule(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } class Engine { private String name; public Engine(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } class EscapeTower{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public EscapeTower(String name) { super(); this.name = name; } }

package com.bjsxt.builder; public interface AirShipBuilder { Engine builderEngine(); OrbitalModule builderOrbitalModule(); EscapeTower builderEscapeTower(); }

package com.bjsxt.builder; public class SxtAirShipBuilder implements AirShipBuilder { //StringBuilder, 以后学习XML解析中,JDOM库中的类:DomBuilder,SaxBuilder @Override public Engine builderEngine() { System.out.println("构建尚学堂牌发动机!"); return new Engine("尚学堂牌发动机!"); } @Override public EscapeTower builderEscapeTower() { System.out.println("构建逃逸塔"); return new EscapeTower("尚学堂牌逃逸塔"); } @Override public OrbitalModule builderOrbitalModule() { System.out.println("构建轨道舱"); return new OrbitalModule("尚学堂牌轨道舱"); } }

package com.bjsxt.builder; public interface AirShipDirector { /** * 组装飞船对象 * @return */ AirShip directAirShip(); }

package com.bjsxt.builder; public class SxtAirshipDirector implements AirShipDirector { private AirShipBuilder builder; public SxtAirshipDirector(AirShipBuilder builder) { this.builder = builder; } @Override public AirShip directAirShip() { Engine e = builder.builderEngine(); OrbitalModule o = builder.builderOrbitalModule(); EscapeTower et = builder.builderEscapeTower(); //装配成飞船对象 AirShip ship = new AirShip(); ship.setEngine(e); ship.setEscapeTower(et); ship.setOrbitalModule(o); return ship; } }

package com.bjsxt.builder; public class Client { public static void main(String[] args) { AirShipDirector director = new SxtAirshipDirector(new SxtAirShipBuilder()); AirShip ship = director.directAirShip(); System.out.println(ship.getEngine().getName()); ship.launch(); } }
分类:
java23设计模式 / 创建型
, java23设计模式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决