设计模式代码

来源:互联网 发布:网络信息发布 编辑:程序博客网 时间:2024/06/03 20:43

例题

package cn.taxue;/** * 单例设计模式 * @author taxue * */public class Singleton {private static Singleton uniqueInstance = null;private Singleton(){//避免类外部被实例化}public static Singleton getInstance(){if(uniqueInstance == null){uniqueInstance = new Singleton();}return uniqueInstance;}}

单例代码的实现

package cn.taxue;public class TestStream {String name = null;public String getName() {return name;}public void setName(String name) {this.name = name;}// 构造方法private TestStream() {}private static TestStream ts1 = null;public static TestStream getTest() {if (ts1 == null) {ts1 = new TestStream();}return ts1;}public void printInfo(){System.out.println("this name is "+ name);}}

package cn.taxue;public class TMain {public static void main(String[] args) {TestStream ts1 = TestStream.getTest();ts1.setName("王乾坤");TestStream ts2 = TestStream.getTest();ts2.setName("踏雪");ts1.printInfo();ts2.printInfo();if (ts1 == ts2) {System.out.println("创建的是一个实例");} else {System.out.println("创建的不是一个实例");}}}
代码运行:

this name is 踏雪
this name is 踏雪
创建的是一个实例

结论:证明单例模式为一个面向对象的应用程序提供了对象惟一的访问点,不管它实现何种功能,整个应用程序都会同享一个实例对象

1.饿汉式单例类

/** * 饿汉式单例类.在类初始化时,已经自行实例化    * @author taxue * */public class Ehanshi {// 私有默认构造private Ehanshi(){}//已经自行实例化private static final Ehanshi ehashi = new Ehanshi();//静态工厂方法public static Ehanshi getEhanshi(){return ehashi;}}

2.懒汉式单例类

package cn.taxue;/** * 懒汉式单例类.在第一次调用的时候实例化 *  * @author taxue *  */public class Lanhanshi {// 私有的默认构造子private Lanhanshi() {}private static Lanhanshi lanhanshi = null;// 静态工厂方法public synchronized static Lanhanshi getIlanhanshi() {if (lanhanshi == null) {lanhanshi = new Lanhanshi();}return lanhanshi;}}


0 0
原创粉丝点击