android 移动网站开发,wordpress 安卓,关于做旅游网站的参考文献,旌阳区黄河开发建设网站引言
在软件开发中#xff0c;有时需要构建具有复杂结构的对象#xff0c;如果直接使用构造函数或者 setter 方法逐个设置对象的属性#xff0c;会导致代码变得冗长、难以维护#xff0c;并且容易出错。为了解决这个问题#xff0c;我们可以使用建造者模式。
一、建造者…引言
在软件开发中有时需要构建具有复杂结构的对象如果直接使用构造函数或者 setter 方法逐个设置对象的属性会导致代码变得冗长、难以维护并且容易出错。为了解决这个问题我们可以使用建造者模式。
一、建造者模式概述
建造者模式是一种创建型设计模式它的主要目的是将一个复杂对象的构建过程与其表示分离使得同样的构建过程可以创建不同的表示。这种模式常用于构建具有复杂结构的对象例如包含多个部件的对象或者对象的构建过程需要进行多个步骤。
二、建造者模式的结构
建造者模式包含以下几个角色
产品Product要构建的复杂对象它由多个部件组成。抽象建造者Builder定义了构建产品的抽象方法具体建造者类将实现这些方法来构建具体的产品。具体建造者Concrete Builder实现了抽象建造者定义的方法负责构建产品的各个部件并返回构建后的产品。指挥者Director负责使用建造者构建产品的对象它通常不了解具体的构建过程只负责按照指定的步骤调用建造者的方法来构建产品。
三、建造者模式的优点
分步构建将构建过程分步进行每一步都由具体建造者负责可以更加精细地控制构建过程。隔离复杂性将构建过程与产品的表示分离使得构建过程的变化不会影响产品的表示从而提高了系统的灵活性和可维护性。复用性可以使用相同的构建过程来构建不同的产品提高了代码的复用性。逐步完善可以逐步完善构建过程根据需求的变化灵活地调整构建过程。
四、建造者模式的应用场景
需要构建的产品具有复杂的内部结构包含多个部件。需要构建的产品的构建过程需要进行多个步骤并且每个步骤的实现方式可能不同。需要构建的产品的属性之间存在一定的约束关系需要按照一定的顺序来构建产品。
五、建造者模式的示例代码
我们先来看下相关 UML 图 产品角色
package com.markus.desgin.mode.creational.builder;/*** Author: zhangchenglong06* Date: 2024/3/7* Description:*/
public class Car {private Wheel wheel;private SteeringWheel steeringWheel;public Wheel getWheel() {return wheel;}public void setWheel(Wheel wheel) {this.wheel wheel;}public SteeringWheel getSteeringWheel() {return steeringWheel;}public void setSteeringWheel(SteeringWheel steeringWheel) {this.steeringWheel steeringWheel;}Overridepublic String toString() {return Car{ wheel wheel , steeringWheel steeringWheel };}
}package com.markus.desgin.mode.creational.builder;/*** Author: zhangchenglong06* Date: 2024/3/7* Description:*/
public interface SteeringWheel {String steeringWheel();
}package com.markus.desgin.mode.creational.builder;/*** Author: zhangchenglong06* Date: 2024/3/7* Description:*/
public class XiaomiSteeringWheel implements SteeringWheel {Overridepublic String steeringWheel() {return 小米轮毂;}
}package com.markus.desgin.mode.creational.builder;/*** Author: zhangchenglong06* Date: 2024/3/7* Description:*/
public interface Wheel {String wheelType();
}package com.markus.desgin.mode.creational.builder;/*** Author: zhangchenglong06* Date: 2024/3/7* Description:*/
public class XiaomiWheel implements Wheel{Overridepublic String wheelType() {return 小米方向盘;}
}
抽象构建者
package com.markus.desgin.mode.creational.builder;/*** Author: zhangchenglong06* Date: 2024/3/7* Description:*/
public abstract class CarBuilder {protected Car car new Car();public abstract CarBuilder buildWheel(Wheel wheel);public abstract CarBuilder buildSteeringWheel(SteeringWheel steeringWheel);public Car builder() {return car;}
}具体构建者
package com.markus.desgin.mode.creational.builder;/*** Author: zhangchenglong06* Date: 2024/3/7* Description:*/
public class CommonCarBuilder extends CarBuilder {Overridepublic CarBuilder buildWheel(Wheel wheel) {this.car.setWheel(wheel);return this;}Overridepublic CarBuilder buildSteeringWheel(SteeringWheel steeringWheel) {this.car.setSteeringWheel(steeringWheel);return this;}
}指挥官
package com.markus.desgin.mode.creational.builder;/*** Author: zhangchenglong06* Date: 2024/3/7* Description:*/
public interface DirectorT {T construct();
}package com.markus.desgin.mode.creational.builder;/*** Author: zhangchenglong06* Date: 2024/3/7* Description: 小米制造商*/
public class XiaoMiDirector implements DirectorCar {private CarBuilder carBuilder;public XiaoMiDirector(CarBuilder carBuilder) {this.carBuilder carBuilder;}Overridepublic Car construct() {carBuilder.buildWheel(new XiaomiWheel());carBuilder.buildSteeringWheel(new XiaomiSteeringWheel());return carBuilder.builder();}
}客户端
package com.markus.desgin.mode.creational.builder;/*** Author: zhangchenglong06* Date: 2024/3/7* Description:*/
public class Client {public static void main(String[] args) {CarBuilder carBuilder new CommonCarBuilder();DirectorCar director new XiaoMiDirector(carBuilder);Car car director.construct();System.out.println(car);}
}六、建造者模式在 Spring 中的应用
在Spring框架中有几个组件使用了建造者模式的思想来构建复杂对象其中包括
RestTemplateBuilder RestTemplateBuilder是用于构建RestTemplate实例的建造者。RestTemplate是Spring提供的用于访问Restful服务的工具类它支持各种HTTP请求方法和数据交换格式如JSON和XML。RestTemplateBuilder提供了一系列方法来配置RestTemplate的各种属性例如连接超时、读取超时、拦截器等使得构建RestTemplate实例更加灵活和便捷。WebMvcConfigurer WebMvcConfigurer是Spring MVC框架中的一个接口用于配置Web MVC的行为。在Spring Boot应用程序中通常会创建一个实现了WebMvcConfigurer接口的配置类来自定义Web MVC的行为。通过实现WebMvcConfigurer接口可以通过覆盖其中的方法来配置拦截器、消息转换器、视图解析器等各种组件从而实现对Spring MVC框架的定制化。这种灵活性和可定制性正是建造者模式的优势之一。SqlSessionFactoryBean 在Spring中使用MyBatis进行持久化操作时通常会配置一个SqlSessionFactoryBean实例来创建SqlSessionFactory对象。SqlSessionFactory是MyBatis框架中的核心接口用于创建SqlSession对象通过SqlSession对象可以执行SQL语句并与数据库进行交互。SqlSessionFactoryBean提供了一系列方法来配置MyBatis的各种属性例如数据源、类型别名、Mapper扫描等使得创建SqlSessionFactory实例更加灵活和可配置。
这些组件在Spring框架中使用建造者模式的思想通过提供一系列的配置方法来构建复杂的对象实例使得对象的创建过程更加灵活和可定制。
七、设计模式百宝箱
在本节我们开始填充我们的百宝箱
面向对象基础 抽象封装多态继承 面向对象原则 依赖抽象不要依赖具体类针对接口编程不针对具体实现编程类应该对扩展开放对修改关闭为交互对象之间的松耦合设计而努力 面向对象设计模式 简单工厂模式定义了一个创建对象的接口将创建对象的内容从客户端抽离出来抽象工厂模式提供一个接口用于创建相关或依赖对象的家族而不需要明确指定具体类原型模式通过复制现有对象来创建新对象提高代码效率和可维护性建造者模式将一个复杂对象的构建过程与其表示分离使得同样的构建过程可以创建不同的表示
八、总结
建造者模式是一种创建型设计模式通过将构建过程与产品的表示分离使得同样的构建过程可以创建不同的表示。本文介绍了建造者模式的概念、结构、优点、应用场景并提供了示例代码进行说明。建造者模式可以有效地解决构建复杂对象时的代码冗长、难以维护的问题是一种值得推荐的设计模式。