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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 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
相关文章
|
1月前
|
Java 数据库
在Java中使用Seata框架实现分布式事务的详细步骤
通过以上步骤,利用 Seata 框架可以实现较为简单的分布式事务处理。在实际应用中,还需要根据具体业务需求进行更详细的配置和处理。同时,要注意处理各种异常情况,以确保分布式事务的正确执行。
|
3月前
|
设计模式 算法
设计模式--建造者模式 builder
这篇文章通过一个电脑购买的例子,详细解释了建造者模式的四个角色(产品类、抽象构建者、实体构建类和指导者类),并提供了相应的代码实现,阐述了建造者模式在设计复杂对象时的应用和优势。
设计模式--建造者模式 builder
|
28天前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
|
1月前
|
安全 IDE Java
Java常见规范及易忘点
遵循Java编程规范和注意易忘点是提高代码质量和可维护性的关键。通过规范的命名、格式、注释和合理的代码组织,可以让代码更加清晰和易于维护。同时,注意空指针检查、线程安全、集合框架和字符串操作等常见易忘点,可以减少程序错误,提高运行效率。结合单一职责原则、面向接口编程和合理的异常处理,能够编写出高质量的Java代码。希望本文能够帮助Java开发者提升编码水平,写出更高效、更可靠的代码。
26 2
|
1月前
|
设计模式 Java 数据库连接
Java编程中的设计模式:单例模式的深度剖析
【10月更文挑战第41天】本文深入探讨了Java中广泛使用的单例设计模式,旨在通过简明扼要的语言和实际示例,帮助读者理解其核心原理和应用。文章将介绍单例模式的重要性、实现方式以及在实际应用中如何优雅地处理多线程问题。
39 4
|
1月前
|
数据采集 Java API
java怎么设置代理ip:简单步骤,实现高效网络请求
本文介绍了在Java中设置代理IP的方法,包括使用系统属性设置HTTP和HTTPS代理、在URL连接中设置代理、设置身份验证代理,以及使用第三方库如Apache HttpClient进行更复杂的代理配置。这些方法有助于提高网络请求的安全性和灵活性。
|
2月前
|
设计模式 Java 程序员
[Java]23种设计模式
本文介绍了设计模式的概念及其七大原则,强调了设计模式在提高代码重用性、可读性、可扩展性和可靠性方面的作用。文章还简要概述了23种设计模式,并提供了进一步学习的资源链接。
54 0
[Java]23种设计模式
|
1月前
|
设计模式 JavaScript Java
Java设计模式:建造者模式详解
建造者模式是一种创建型设计模式,通过将复杂对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。本文详细介绍了建造者模式的原理、背景、应用场景及实际Demo,帮助读者更好地理解和应用这一模式。
|
2月前
|
运维 监控 搜索推荐
阿里大鱼进行发短信业务---使用详细步骤-Java操作
这篇文章详细介绍了如何在Java中使用阿里大鱼服务来发送短信,包括开通短信服务、签名和模板管理,以及具体的Java开发步骤和代码示例。
108 0
阿里大鱼进行发短信业务---使用详细步骤-Java操作
|
2月前
|
设计模式 监控 算法
Java设计模式梳理:行为型模式(策略,观察者等)
本文详细介绍了Java设计模式中的行为型模式,包括策略模式、观察者模式、责任链模式、模板方法模式和状态模式。通过具体示例代码,深入浅出地讲解了每种模式的应用场景与实现方式。例如,策略模式通过定义一系列算法让客户端在运行时选择所需算法;观察者模式则让多个观察者对象同时监听某一个主题对象,实现松耦合的消息传递机制。此外,还探讨了这些模式与实际开发中的联系,帮助读者更好地理解和应用设计模式,提升代码质量。
Java设计模式梳理:行为型模式(策略,观察者等)