Java设计模式——建造者模式——步骤规范 结果可控

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文目录1. 背景2. 原始建造模式3. 正儿八经的建造者模式4. 作用

1. 背景

要理解建造者模式,首先要理解农民工建筑模式。


农民工建筑模式就是靠经验,对怎么盖这个屋子心里大体有个数,优点就是自由灵活成本低,效果就是你很难掌控其中的每一个环节。比如建筑施工前必须先安装防尘网和保护施工人员的拦网,这个基本规定都有可能无法落实。这种模式我称之为原始建造模式。


建造者模式就厉害了,它是制度化运营,必须得有个人现场指挥,这个人非常了解建造流程,而且要求所有施工人员必须按照流程来。这样肯定成本高了点,毕竟至少多了一个人要给他发工资,但是确实在规范性、安全性方面得到提高。这种是正儿八经的建造者模式。


2. 原始建造模式

在我们日常的项目中,有一个事情跟这个模型很像,就是数据库连接对象的创建。


按照正常流程就是:


//mysql建造

           Class.forName("com.mysql.jdbc.Driver");

           String url = "jdbc:mysql://127.0.0.1:3306/test";

           String name = "root";

           String pwd = "root";

           conn = DriverManager.getConnection(url,name ,pwd);

//oracle建造

           Class.forName("oracle.jdbc.driver.OracleDriver");

           String url = "jdbc:oracle:thin:@//127.0.0.1:1521/orcl";

           String name = "root";

           String pwd = "root";

           conn = DriverManager.getConnection(url,name ,pwd);


如果中间少了哪一步,比如name忘了赋值,这个可能就要有问题了。而且流程高度相似,完全可以请一个专业人员来管控这个流程。此处用建造者模式来改造上述流程。


3. 正儿八经的建造者模式

OK,首先我们确定我们建造的对象是Connection,建造行为可定义为ConnectionBuilder抽象类,因为不管什么Connection建造都是可以由这个抽象类描述的:


/**

* 建造行为接口

*/

public abstract class ConnectionBuilder {

protected String driver;

protected String url;

protected String name;

protected String password;


public abstract void buildDriver();

public abstract void buildUrl();

public abstract void buildName();

public abstract void buildPassword();

public abstract Connection createConnection() throws Exception;

}


然后我们请一个指挥官,这个指挥官非常了解Connection建造流程,只要他出手,必按流程走:


/**

* 建造指挥官

*/

public class ConnectionDirector {

public Connection construct(ConnectionBuilder builder) throws Exception {

 builder.buildDriver();

 builder.buildUrl();

 builder.buildName();

 builder.buildPassword();

 return builder.createConnection();

}

}


然后来了个具体的建造任务,是要建造一个Mysql的连接对象,而且任务清单也出来了:


public class MysqlConnectionBuilder extends ConnectionBuilder {

       //每个方法表示建造过程中一个步骤/任务

@Override

public void buildDriver() {

 this.driver = "com.mysql.jdbc.Driver";

}


@Override

public void buildUrl() {

 this.url = "jdbc:mysql://127.0.0.1:3306/test";

}


@Override

public void buildName() {

 this.name = "root";

}


@Override

public void buildPassword() {

 this.password = "root";

}


@Override

public Connection createConnection() throws Exception {

 Class.forName(this.driver);

 return DriverManager.getConnection(url, name, password);

}


}


OK,此时如果我们自己建,比如直接调用createConnection,就会忽略流程,可能有问题。


所以我们利用建造者模式,请指挥官来建:


public static void main(String[] args) throws Exception {

 ConnectionDirector director=new ConnectionDirector();

 Connection mysqlCon=director.construct(new MysqlConnectionBuilder());

}


4. 作用

用了指挥官之后,看似麻烦了,实际可拓展性更好了,比如再来个oracle、sqlserver数据库,照样给你建了,而且保证正确。


实际上设计模式就是通过语法的一些限制,保证一些事情的安全顺利执行。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
Java 数据库
在Java中使用Seata框架实现分布式事务的详细步骤
通过以上步骤,利用 Seata 框架可以实现较为简单的分布式事务处理。在实际应用中,还需要根据具体业务需求进行更详细的配置和处理。同时,要注意处理各种异常情况,以确保分布式事务的正确执行。
|
28天前
|
算法 Java API
Java 方法注释:规范、实用和高质量的写法
本文深入探讨了如何编写高质量的 Java 方法注释
49 11
|
27天前
|
SQL 安全 前端开发
对于Java代码审计,主要的审计步骤如下:
### Java代码审计简介 Java代码审计是确保应用程序安全的重要步骤,主要包括以下几个关键环节: 1. **确定项目结构与技术框架**:了解项目的整体架构和技术栈。 2. **环境搭建**:配置开发环境,确保能够正常运行项目。 3. **配置文件分析**:重点分析`pom.xml`、`web.xml`等配置文件,特别是依赖组件的版本是否存在已知漏洞。
|
28天前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
52 2
|
28天前
|
前端开发 NoSQL Java
【Java若依框架】RuoYi-Vue的前端和后端配置步骤和启动步骤
本文介绍了如何配置和启动基于Java的若依(RuoYi)项目,涵盖后端和前端的详细步骤。首先,准备Redis、MySQL以及IDE(如Idea和VS)。接着,通过GitHub获取代码并导入到IDE中,执行必要的SQL文件和配置数据库密码。然后,启动Redis并进行相关配置。最后,按照前端配置步骤克隆前端代码库,打开终端执行命令完成前端配置。整个过程详细记录了每一步的操作,帮助开发者顺利部署若依项目。 如果你觉得有帮助,请点赞、关注和收藏,这将是我持续分享的动力!
283 1
|
3月前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
|
3月前
|
安全 IDE Java
Java常见规范及易忘点
遵循Java编程规范和注意易忘点是提高代码质量和可维护性的关键。通过规范的命名、格式、注释和合理的代码组织,可以让代码更加清晰和易于维护。同时,注意空指针检查、线程安全、集合框架和字符串操作等常见易忘点,可以减少程序错误,提高运行效率。结合单一职责原则、面向接口编程和合理的异常处理,能够编写出高质量的Java代码。希望本文能够帮助Java开发者提升编码水平,写出更高效、更可靠的代码。
46 2
|
3月前
|
设计模式 Java 数据库连接
Java编程中的设计模式:单例模式的深度剖析
【10月更文挑战第41天】本文深入探讨了Java中广泛使用的单例设计模式,旨在通过简明扼要的语言和实际示例,帮助读者理解其核心原理和应用。文章将介绍单例模式的重要性、实现方式以及在实际应用中如何优雅地处理多线程问题。
56 4
|
4月前
|
设计模式 Java 程序员
[Java]23种设计模式
本文介绍了设计模式的概念及其七大原则,强调了设计模式在提高代码重用性、可读性、可扩展性和可靠性方面的作用。文章还简要概述了23种设计模式,并提供了进一步学习的资源链接。
92 0
[Java]23种设计模式
|
3月前
|
数据采集 Java API
java怎么设置代理ip:简单步骤,实现高效网络请求
本文介绍了在Java中设置代理IP的方法,包括使用系统属性设置HTTP和HTTPS代理、在URL连接中设置代理、设置身份验证代理,以及使用第三方库如Apache HttpClient进行更复杂的代理配置。这些方法有助于提高网络请求的安全性和灵活性。
110 0

热门文章

最新文章