1、java语言支持四种类型:
(1)接口(interface):
(2)类(class):
(3)数组(Array):
(4)基本类型(primitive):唯一非引用类型(reference type)
2、方法签名:包括方法名称、参数,不包括返回值;
《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《
3、本条静态工厂方法与设计模式的工厂方法不是对应等价的;
- 该静态方法将boolean基本类型值转换成Boolean对象引用
- 类可以通过静态工厂方法提供他的客户端,而不是构造器
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、缺点二:与其他的静态方法没有任何区别