天天看点

多线程程序设计学习(3)immutable pattern模式

Immutable pattern【坚不可摧模式】

一:immutable pattern的参与者

--->immutable(不变的)参与者

        1.1:immutable参与者是一个字段的值都无法更改的类。

        1.2:immutable也没有任何用来更改字段值的方法。

        1.3:immutable参与者方法不需要设置synchronized

二:immutable pattern模式什么时候使用

--->当实例产生后,状态不再变化时

        2.1实例状态不再变化是首要条件。

        2.2何为不可变状态。就是实例的值不会发生变化。

--->实例需要共享,而且访问频繁时

--->String 类是immutable类不需要synchronized保护

       StringBuffer类是非immutable类需要synchronized保护

三:immutable pattern思考

--->final关键字

        2.1:final类:当生命final类,该类无法延伸,就是不能定义子类。

        2.2:final方法:

                        若实例方法(非静态)声明成final时,该方法无法被子类覆盖重写。

                        若将类方法(静态)声明成final时,该方法无法被子类所隐藏

        2.3final变量

                        final字段只能赋值一次。

                        final(非静态)字段赋值分两种方法:(1)声明时赋值(2)通过构造器赋值

                        final(静态)字段赋值分两种方法:(1)声明时赋值(2)通过静态块赋值

        2.3覆盖和隐藏的概念

                        实例方法被子类方法所覆盖时,实际被调用的方法是在执行时决定的

                        类方法被子类方法隐藏时,实例被调用的方法是在编译时决定的。

--->immutable不变性很微妙。不是设置finnal,私有化,不提供赋值方法,就是永久不变性的。

                        final只是不可再次赋值。如果final的字段是一个可变的引用属性,那么immutable,就会被破坏。

room类

多线程程序设计学习(3)immutable pattern模式
多线程程序设计学习(3)immutable pattern模式

View Code

student类

多线程程序设计学习(3)immutable pattern模式
多线程程序设计学习(3)immutable pattern模式

测试类

多线程程序设计学习(3)immutable pattern模式
多线程程序设计学习(3)immutable pattern模式

immutable范例(immutable只是一个概念模式,而不是一个固定的格式)

多线程程序设计学习(3)immutable pattern模式
多线程程序设计学习(3)immutable pattern模式