Java 实现建造者模式:打造摩拜与哈啰共享单车
以下是一个使用 Java 实现共享单车建造者模式的示例代码: ```java // 自行车产品类 class Bike { private String frameMaterial; private String seatMaterial; public String getFrameMaterial() { return frameMaterial; } public void setFrameMaterial(String frameMaterial) { this.frameMaterial = frameMaterial; } public String getSeatMaterial() { return seatMaterial; } public void setSeatMaterial(String seatMaterial) { this.seatMaterial = seatMaterial; } @Override public String toString() { return "Bike{" + "frameMaterial='" + frameMaterial + '\'' + ", seatMaterial='" + seatMaterial + '\'' + '}'; } } // 抽象建造者 abstract class Builder { protected Bike bike = new Bike(); abstract void buildFrameMaterial(); abstract void buildSeatMaterial(); Bike getBike() { return bike; } } // 摩拜单车建造者 class MobikeBuilder extends Builder { @Override void buildFrameMaterial() { bike.setFrameMaterial("铝合金"); } @Override void buildSeatMaterial() { bike.setSeatMaterial("橡胶"); } } // 哈啰单车建造者 class HellobikeBuilder extends Builder { @Override void buildFrameMaterial() { bike.setFrameMaterial("碳纤维"); } @Override void buildSeatMaterial() { bike.setSeatMaterial("真皮"); } } // 指挥者 class Director { public Bike construct(Builder builder) { builder.buildFrameMaterial(); builder.buildSeatMaterial(); return builder.getBike(); } } public class BikeBuilderPattern { public static void main(String[] args) { Director director = new Director(); Builder mobikeBuilder = new MobikeBuilder(); Bike mobike = director.construct(mobikeBuilder); System.out.println("摩拜单车:" + mobike); Builder hellobikeBuilder = new HellobikeBuilder(); Bike hellobike = director.construct(hellobikeBuilder); System.out.println("哈啰单车:" + hellobike); } } ``` 在上述代码中,我们定义了`Bike`类表示自行车产品,包含车架和车座的材质属性。`Builder`是抽象建造者,`MobikeBuilder`和`HellobikeBuilder`是具体的建造者,分别实现了车架和车座材质的设置。`Director`类作为指挥者,控制建造的流程。在`main`方法中创建指挥者对象,并通过不同的具体建造者来创建不同的共享单车。 ######[AI写代码神器 | 643点数解答 | 2024-11-08 16:14:28]
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)438
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)337
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1232
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)383
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)352
- "Java Code: Uncovering Stock Statistics through CSV File Reading"(字节豆包 | 66点数解答 | 2024-11-13 15:31:04)347
- Java 继承实现:重温经典剪刀石头布游戏(字节豆包 | 451点数解答 | 2024-10-20 19:57:58)485
- Java实现日期递增:无数据返20250901,遇20250901返20250902及开发注意要点 (DeepSeek | 242点数解答 | 2025-09-02 11:39:53)96
- 深度解析:Vue中MVVM模式的组成、原理与双向数据绑定优势 (阿里通义 | 249点数解答 | 2023-11-09 00:56:24)278
- Android开发:Kotlin实现Builder模式示例及优势解析(百度文心 | 456点数解答 | 2023-11-09 17:29:15)262
- 工程师必知:PO模式与Page Factory的深度解析(百度文心 | 132点数解答 | 2023-11-09 18:33:18)295
- 2026 年苍溪县印刷企业年报工作:现状、问题与未来举措(字节豆包 | 1245点数解答 | 2026-03-09 12:55:05)28