上文小志给大家介绍了JAVA的三大特征,现在来给大家讲讲JAVA的模式中的单例模式和策略模式。

     对于模式的定义,小志引用了阎宏教授的《JAVA与模式》一书的定义。模式所描述的问题及问题的答案都是具有代表性的问题和问题的答案。所谓具有代表性,就是说它以不同的形式重复出现,允许使用者举一反三,将它应用到不同的环境中去。

     现在来给大家介绍单例模式,单例模式的目的是整个软件运行中只有一个对象,防止对象被实例化多次。它的实现步骤如下:(1)、私有构造函数,此举保证不能被外部所实例;(2)、在该类的内部实例化自己,并且对这个实例得到的对象进行私有权限设置,此举防止了谁都不能实例化该对象;(3)、提供公有的方法,将那个私有的对象返回给调用者,此举是将惟一的实例对象给调用者使用,保证了对象的惟一性。至此,单例模式的过程就讲述完了。

     现在来给大伙讲讲策略模式,相对于单例模式,策略模式明显复杂好多。在讲述之前,先给大伙说两个面向对象的设计原则:(1)、独立应用中需要变化之处独立出来,不和不变的混在一起;(2)、少用继承多用组合。明白这两个原则,就不难理解了。在描述一个大类的时候,我们常常会把一些可能变更的属性加到类内部来定义,这样就导致了程序的描述不全面和不能扩展。所以应该尽量把这些变更的属性分离出来。比如我们来定义一个Animals类,关于发出声音(say())这个动作,由于各种动物的发出声音不同,不适合进行全部的定义,怎么办呢?我们可以定义接口sayBehavior,里面含有未实现的say(),然后可以用不同的类来实现这个接口,实现它的say()。在Animals类里面,我们可以先定义以接口sayBehavior定义的对象,然后用设置发出声音的方法setSay()来设置发出声音。而在调用setSay()方法时,类将实例一个实现了接口sayBehavior的对象。整个过程就这样结束了!

      在这里,小志给大家推荐一本学模式的经典书,阎宏教授的《JAVA与模式》。里面讲得很深刻,不过内容太多,选择性读读就可以了。