马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
建造者模式(Builder Pattern)是一种创建型计划模式,用于将一个复杂对象的构建过程与其表示分离,使得雷同的构建过程可以创建差异的表示。
焦点头脑
将复杂对象的创建步调分解开来,通过一步步的构建来完成对象的创建,潜伏构建的具体细节,从而使构造过程更加灵活。
组成
- Builder(抽象建造者)
定义用于创建产品各部分的接口。
- ConcreteBuilder(具体建造者)
实现抽象建造者接口,完成产品的具体部分构造。
- Product(产品类)
表示复杂对象,包含多个组成部分。
- Director(指挥者)
调用建造者中的方法按特定次序来构建产品。
优缺点
- 优点
分离复杂构建过程与表示:提高代码的清楚性和可维护性。
易于扩展:可以通过添加新的具体建造者来扩展创建流程。
细节控制:通过指挥者可以按特定步调控制产品的创建次序。
- 缺点
生成器类的数量大概会增加,增加代码复杂度。
不适用于构造过程过于简单的场景。
代码实现示例
假设要创建一辆汽车,每辆车由车轮、发动机、车身等部分组成。
- // 产品类
- public class Car {
- private String engine;
- private String wheels;
- private String body;
- // Getter 和 Setter
- public void setEngine(String engine) {
- this.engine = engine;
- }
- public void setWheels(String wheels) {
- this.wheels = wheels;
- }
- public void setBody(String body) {
- this.body = body;
- }
- @Override
- public String toString() {
- return "Car [engine=" + engine + ", wheels=" + wheels + ", body=" + body + "]";
- }
- }
- // 抽象建造者
- public interface CarBuilder {
- void buildEngine();
- void buildWheels();
- void buildBody();
- Car getCar(); // 返回建造好的产品
- }
- // 具体建造者
- public class SportsCarBuilder implements CarBuilder {
- private Car car;
- public SportsCarBuilder() {
- this.car = new Car();
- }
- @Override
- public void buildEngine() {
- car.setEngine("V8 Engine");
- }
- @Override
- public void buildWheels() {
- car.setWheels("Sports Wheels");
- }
- @Override
- public void buildBody() {
- car.setBody("Sleek Sports Body");
- }
- @Override
- public Car getCar() {
- return car;
- }
- }
- // 指挥者
- public class Director {
- private CarBuilder builder;
- public Director(CarBuilder builder) {
- this.builder = builder;
- }
- public Car constructCar() {
- builder.buildEngine();
- builder.buildWheels();
- builder.buildBody();
- return builder.getCar();
- }
- }
- //客户端测试
- public class Main {
- public static void main(String[] args) {
- // 创建具体建造者
- CarBuilder sportsCarBuilder = new SportsCarBuilder();
- // 指挥者控制构建过程
- Director director = new Director(sportsCarBuilder);
- // 构建产品
- Car sportsCar = director.constructCar();
- // 输出结果
- System.out.println(sportsCar);
- }
- }
复制代码 建造者模式适用场景
- 复杂对象的创建:当一个对象的创建涉及多个部分且需要特定次序时。
- 多种构造方式:需要为同一产品创建差异的表示。
- 隔离创建细节:需要潜伏产品的构建细节时。
- 假如你需要进一步探索建造者模式的高级用法或其他计划模式,随时告诉我!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |