不可变的类只是实例不能被修改的类。每个实例中包含订单所有信息都必须在创建该实例的时候就提供,并在对象的整个生命周期内固定不变。不可变的类有String、基本类型的包装类、BigInteger和BigDecimal。
要实现不可变的类需要满足一下几点要求:
1、不要提供任何会修改对象状态的方法。(setter方法)
2、保证类不会被扩展。用final修饰类或者是私有化构造器提供公有静态工厂方法。
3、使所有的域都是final的。
4、使所有的域都成为私有的。
5、确保对于任何可变组件的互斥访问。
如果类具有指向可变对象的域,则必须确保该类的客户端无法获得指向这些对象的引用。并且,永远不要用客户端提供的对象引用来初始化这样的域,也不要从任何访问方法中返回该对象的引用。在构造器、访问方法和readObject中请使用保护性拷贝。
网友评论