JavaEffective知识Part01

1、静态工厂方法与构造器不同
	优势:
		1.1、有名称
		1.2、不必在每次调用它们的时候都创建一个新对象
		1.3、可以返回原返回类型的任何子类型的对象
		1.4、所返回的对象的类可以随着每次调用而发生变化,这取决于静态工厂方法的参数值
		1.5、方法返回的对象所属的类,在编写包含该静态工厂方法的类时可以不存在
	缺点:
		1.1、类如果不含共有的或者受保护的构造器,就不能被子类化
		1.2、程序员很难发现他们
2、依赖注入
	2.1、当创建一个新的实例时,就将该资源传到构造器中。
	2.1、不要使用Singleton和静态工具类来实现依赖一个或多个底层资源的类,且该资源的行为会影响到该类的行为,也不要直接用这个类来创建这些资源。而应该将这些资源或者工厂传给构造器(或者静态工厂,或者构造器),通过它们来创建类。这个实践就被称为依赖注入,极大地提升了类的灵活性、可重用性和可测试性。
3、使用String.matchs 会创建一个pattern 会损耗性能,最好先创建一个private static final Pattern xxx;]
4、覆盖equals通用约定(都是非null的x)
	4.1、自反性,对于任何非null的引用值,x.equals(x)返回true
	4.2、对称性,当且仅当y.equals(x)为true, x.equals(y)也必须true
	4.3、传递性,如果x.equals(y)和x.equals(z)为true则y.equals(z)为true
	4.4、一致性,只要equals的比较操作在对象中所用的信息没有被修改,多次调用结果相同
	4.5、非空性,x.equals(null)返回false
5、clone拷贝最好用构造器或者工厂提供,除了数组最好利用clone
6、接口应该只被用来定义类型,而不是用来导出常量,使用枚举或者不可实例化的工具类,
	如果使用接口导出常量会把实现细节泄露到该类的导出API中,另外如果以后的实现类不再需要这些常量了,他的子类命名空间也会被接口中的常量污染。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值