博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
考虑用静态工厂方法替代构造器(1)
阅读量:7045 次
发布时间:2019-06-28

本文共 1114 字,大约阅读时间需要 3 分钟。

hot3.png

1、java语言支持四种类型:

(1)接口(interface):

(2)类(class):

(3)数组(Array):

(4)基本类型(primitive):唯一非引用类型(reference type)

2、方法签名:包括方法名称、参数,不包括返回值;

《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《

3、本条静态工厂方法与设计模式的工厂方法不是对应等价的;

  • 该静态方法将boolean基本类型值转换成Boolean对象引用
  • 类可以通过静态工厂方法提供他的客户端,而不是构造器

144455_boyS_3847203.png

4、静态工厂方法比构造器优势

(1)第一大优势:有名称:

  • 构造器参数没有确切描述返回的对象,有名称的静态工厂更容易使用,易于阅读;
  • 当需要带有相同签名的构造器时,使用静态工厂代替构造器,使用名称区别他们;

(2)不必每次调用的时候创建一个新对象:

  • 不可变类 (见15条)使用预先创建好的实例(缓存创建实例)进行重复利用
  • 不可变类:实例不可被修改类
  • 避免不必要创建重复对象;
  • 实例受控的类 静态工厂能为重复调用返回相同对象
  • 有助于严格控制某时刻,哪些实例应该存在
  • 可以确保是一个Singleton或者是不可实例化的
  • 不可变类可以确保不会存在两个相等的实例

(3)静态工厂方法可以返回原返回类型的任意子类型,更加灵活

  • API返回对象,对象的类又不会变成公有
  • 适用于基于接口的框架
  • 基于接口的框架,包含静态工厂方法不可实现类
  • Collection FrameWork集合接口有32个实现,采用上述方法(不可实例化类Collections导出)
  • Collections API导出比32个独立公有导出,实现起来小得多
  • API数量少,概念意义也少

静态工厂方法返回的对象所属的类,在编写工厂方法是可以不存在

  • 服务提供者框架的基础:如JDBC
  • 服务提供者框架:多个服务提供者实现一个服务,系统为客户端提供多个实现,并使之解耦

服务提供者框架:

  • 组件1服务接口:提供者实现
  • 组件2提供者注册API:系统用来注册实现的
  • 3服务访问API:客户端用来获取服务实例的
  • 4服务提供者接口(可选):提供者创建服务实例;若无,反射实例化即可

服务提供者可以有无数变种

  • 服务访问API可以利用适配器,返回更加丰富服务接口

(4)第四大优势:创建参数化类型实例,代码更加简介

5、静态工厂方法主要缺点一:

  • 类没有公有或受保护构造器,不能被子类化
  • 这样鼓励程序使用组合,不是继承<16条>

6、缺点二:与其他的静态方法没有任何区别

转载于:https://my.oschina.net/u/3847203/blog/1816305

你可能感兴趣的文章
Unix删除文件的找回方法
查看>>
Find 75000万像素和诺基亚的不是一个概念
查看>>
mysql处理添加外键时 error 150 问题
查看>>
企业如何针对用户数据进行有效保护
查看>>
Tomcat启动时报 java.lang.OutOfMemoryError: Java heap space
查看>>
Active Directory 基础回顾 (三)FSMO迁徙方式小总结
查看>>
Shell Script不同运行方式的区别
查看>>
Linux系统基本网络配置之ifconfig命令
查看>>
看几大IT公司的JSON利器
查看>>
Cocos2d-x 物理场景简单搭建
查看>>
认识“JPG、TXT”格式的病毒
查看>>
redhat6.2配置本地yum源
查看>>
tomcat配置文件server.xml详解
查看>>
ipython的两种安装方式
查看>>
有流媒体功能的lnmp部署练习,强化练习
查看>>
android消息机制,异步和多线程
查看>>
Linux下抓包工具tcpdump以及分析包的工具wireshark
查看>>
设置新建maven项目的jdk版本
查看>>
用copy命令将两个文件绑定,上传asp马
查看>>
FIR.im:iOS 8.1.3 “各路助手挺尸”、“封杀一切助手”的背后
查看>>