这些模式大体上分为三类,分别从对象的创建,对象的结构以及对象的行为这三个行为来总结软件开发人员在设计方面的经验。
1.创建型模式(针对对象的创建):常用的包括简单工厂模式,工厂方法模式,抽象工厂模式,单例模式等。
2.结构型模式(针对对象的组成以及对象之间的依赖关系):常用的包括享元模式等。
3.行为型模式(针对对象的行为):常用的包括观察者模式等。
下面针对常用的设计模式编写程序,具体讲解(Java版本),本篇随笔主要是单例模式。
所谓单例模式,就是确保一个类只有一个实例,并且该实例必须自动创建,并向整个系统提供该实例。
而单例模式又可以分为饿汉式单例模式和懒汉式单例模式。饿汉式是在类初始化时就已经创建了自身对象,而懒汉式单例模式则是在需要使用的时候才创建自身的对象,他们的示意代码如下:
饿汉式单例模式:
懒汉式单例模式:
注意上面的懒汉式单例模式的getInstance方法加了Synchronized关键字,这是为了在多线程环境下依然保证单例。 下面写了一个程序实现单例模式线程,定时向控制台输出信息:其中包括一个类Farmer.java(农民),继承Person,该类采用单例模式创建对象。还包括一个类SingletonThread.java,实现Runnable接口。最后包括一个测试类SingletonThreadTest.java,创建了两个线程,并启动。具体的代码见下面:Person.java:
Farmer.java:
SigletonThread.java:
SigletonThreadTest.java:
ps:单例模式的好处有很多方面,其主要作用是保证在Java应用程序中,一个类Class只有一个实例存在,如在数据库连接时需要单线程操作。再比如网站中的计数器的实现(Synchronized)。另外单例模式限制了实例的个数,有利于Java垃圾回收,节省了内存。