建造者模式:组装复杂实例
1.工厂模式:提供创建对象的接口2.单例模式:生成只存在一个的实例3.桥接模式:将类的功能层次和实现层次分离,动态结合4.享元模式:避免大量相同开销5.原型模式:通过复制生成实例
6.建造者模式:组装复杂实例
7.职责链模式:推卸责任8.模板模式:具体的步骤延迟到子类中实现9.迭代器模式:一个个遍历10.外观模式:隐藏了复杂系统的复杂性,并提供一个简单的接口来访问系统11.代理模式:为其他对象提供一种代理以控制对这个对象的访问12.适配器模式:将两个不兼容的类纠合在一起13.组合模式:处理树形结构数据14.装饰器模式:动态给一个对象添加一些额外的职责15.命令模式:命令也是类16.访问者模式:访问数据结构并处理数据17.观察者模式:发送状态变化通知18.状态模式:用类表示状态19.策略模式:整体替换算法20.解释器模式:语法规则也是类21.中介者模式:只有一个仲裁者22.备忘录模式:保存对象状态建造者模式的生命周期通常包括以下步骤:
- 创建一个建造者对象
- 调用该创建者对象的一系列设置方法,以指定对象的各个属性
- 调用build()方法,该方法将运行实际的构建过程
- 返回构建的对象
建造者模式可以减少代码的重复性,并且可以简化创建复杂对象的过程,从而提高代码的可读性和可维护性。由于它提供了灵活的构造选项,因此建造者模式尤其适用于创建具有多个可选属性的对象。
建造者模式通常涉及四个主要组件:产品(Product),建造者(Builder),指挥者(Director)和客户端(Client)。
- 产品 是我们要构建的对象,它具有一系列属性和方法。
- 建造者 是一个具有构建产品各个组成部分的接口或抽象类。它定义了构建对象所需的方法,并且可以有多种实现。
- 指挥者 是负责协调建造者的对象。它负责确保构造器按正确的顺序调用,最终构建出目标对象,同时它可能也包含一些逻辑,比如提供默认值和默认构造器等。
- 客户端 是调用指挥者构建对象的代码。它只需要实例化指挥者和相应的建造者,并将建造器传递给指挥者即可。
示例代码:
public class Product { private String partA; private String partB; private String partC; public void setPartA(String partA) { this.partA = partA; } public void setPartB(String partB) { this.partB = partB; } public void setPartC(String partC) { this.partC = partC; } public void show() { System.out.println("Part A: " + partA); System.out.println("Part B: " + partB); System.out.println("Part C: " + partC); } } public interface Builder { void buildPartA(); void buildPartB(); void buildPartC(); Product getResult(); } public class ConcreteBuilder implements Builder { private Product product = new Product(); @Override public void buildPartA() { product.setPartA("partA"); } @Override public void buildPartB() { product.setPartB("partB"); } @Override public void buildPartC() { product.setPartC("partC"); } @Override public Product getResult() { return product; } } public class Director { public void construct(Builder builder) { builder.buildPartA(); builder.buildPartB(); builder.buildPartC(); } } public class Client { public static void main(String[] args) { Builder builder = new ConcreteBuilder(); Director director = new Director(); director.construct(builder); Product product = builder.getResult(); product.show(); } }
合集:
Java设计模式
分类:
Java设计模式 / 创建型模式
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性