Effective Java:静态工厂方法的优势与应用
需积分: 18 86 浏览量
更新于2024-08-31
收藏 88KB DOCX 举报
"Effective Java读书笔记,记录了作者认为重要的编程实践和建议,特别是关于对象创建和销毁的部分。"
在《Effective Java》这本书中,作者深入探讨了如何编写更高效、更具可维护性的Java代码。第二章主要关注创建和销毁对象的最佳实践。第一条建议是使用静态工厂方法代替构造器。这是因为静态工厂方法有以下优点:
1. **命名**:与构造器不同,静态工厂方法可以根据返回的对象类型或其功能命名,使代码更易于理解和使用。
2. **非创建性调用**:它们并不总是创建新对象,可以重用已创建的对象,从而提高效率,特别是在对象创建成本较高的情况下。
3. **子类型返回**:静态工厂方法可以返回其声明返回类型的任何子类型,提供了更大的灵活性,尤其是在多态上下文中。
4. **动态类型**:根据传入参数,返回对象的类可以在每次调用时改变,允许实现更复杂的逻辑。
5. **延迟初始化**:静态工厂方法可以用于延迟对象的创建,直到真正需要时,这在某些情况下非常有用。
然而,静态工厂方法也有其缺点:
1. **不可子类化**:如果一个类仅包含私有构造器且提供静态工厂方法,那么这个类不能被子类化,这可能限制了设计的扩展性。
2. **不显式**:静态工厂方法不像构造器那样显而易见,程序员可能会忽视它们的存在。
书中还提到了服务提供者框架(Service Provider Framework)的概念,例如JDBC,它允许多个服务提供者实现同一服务,而客户端可以通过标准API来获取服务实例。在这个框架中:
- **服务接口**:定义了提供者必须遵循的规范,如JDBC中的`Connection`接口。
- **提供者注册API**:允许服务提供者向系统注册自己的实现,如`DriverManager.registerDriver`。
- **服务访问API**:客户端通过这些API获取服务实例,如`DriverManager.getConnection`。
- **服务提供者接口**:是创建服务接口实例的工厂对象,例如JDBC的`Driver`接口。
服务访问API有时会返回比提供者本身实现更丰富功能的服务接口,这种设计模式被称为桥接模式,增加了系统的灵活性和可扩展性。
书中还列举了一些静态工厂方法的惯用名称,如`from`, `of`, `valueOf`, `getInstance`, `create`, `newInstance`, `getType`, `newType`, 和 `type`等,这些命名约定可以帮助开发者识别和使用静态工厂方法。
理解并适当地应用静态工厂方法是提升Java代码质量的关键之一,它们能够提供更好的控制力和灵活性,同时在某些情况下可以优化性能。然而,也要注意它们带来的潜在问题,比如限制了类的可扩展性。
2021-01-26 上传
2022-12-16 上传
2021-10-01 上传
2022-11-25 上传
2013-06-14 上传
2024-07-03 上传
2024-04-29 上传
2019-06-22 上传
ThunderKing24
- 粉丝: 2
- 资源: 3
最新资源
- IEEE 14总线系统Simulink模型开发指南与案例研究
- STLinkV2.J16.S4固件更新与应用指南
- Java并发处理的实用示例分析
- Linux下简化部署与日志查看的Shell脚本工具
- Maven增量编译技术详解及应用示例
- MyEclipse 2021.5.24a最新版本发布
- Indore探索前端代码库使用指南与开发环境搭建
- 电子技术基础数字部分PPT课件第六版康华光
- MySQL 8.0.25版本可视化安装包详细介绍
- 易语言实现主流搜索引擎快速集成
- 使用asyncio-sse包装器实现服务器事件推送简易指南
- Java高级开发工程师面试要点总结
- R语言项目ClearningData-Proj1的数据处理
- VFP成本费用计算系统源码及论文全面解析
- Qt5与C++打造书籍管理系统教程
- React 应用入门:开发、测试及生产部署教程