为什么要用设计模式:
刚学编程的朋友也许没怎么注意,注意的是怎样让程序跑起来,但是越往后越是发现,也许我的代码可以写的更简洁,也许重新写一次可以少写几个类,也许。。。。这时,我们考虑的就是代码的美。有人说大家都是用的eclipse,字体一样,格式一样,大小一样,怎么可能谁比谁的代码更美,其实则不然,有的人写的代码太丑了,一个类牵扯了N多个类,看上去就烦,看上去就想吐。这时就引入了设计模式,他能让你的代码更有水准。
什么是设计模式:
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。当然这都是屁话,一个不清楚设计模式的人,理论讲的再好也是对牛弹琴,下面让我们一起进入设计模式的学习。
J2EE常用的设计模式有哪些
1、单例模式 2、抽象工厂模式和工厂模式 3、适配器模式 4、装饰模式 5、观察者模式 6、外观模式
今天我主要学习单例模式,单例模式是用的很多很简单的一种设计模式。
何为单例模式:
单例模式顾名思义就是一个类只允许出现一个对象,而且提供一个返回它的唯一实力的类方法。
单例模式的好处:
1.使内存中只有一个对象,能节省内存空间。
2.能避免繁琐的创建和销毁对象,可以提高性能。
3.避免对共享资源的多重占用。
4.可以全局访问。
什么时候用到单例模式:
1.需要频繁实例化然后销毁的对象。
2.创建对象时耗时过多或者耗资源过多,但又经常用到的对象。
3.频繁访问数据库或文件的对象。
4.对于一个类只需要一个对象。
废话说了这么多,下面看看实例吧:
单例模式分两种:懒汉式单例、饿汉式单例。
懒汉式:
public class Singleton {
private static Singleton singleton = null;//创建一个对象引用
private Singleton(){//构造器私有化
}
public synchronized static Singleton getInstance(){//同步方法返回一个单例对象实例
if(singleton == null){
singleton = new Singleton();
}
return singleton;
}
}
饿汉式:
public class Singleton {
private static Singleton singleton = new Singleton();//创建一个实例对象
private Singleton(){//构造器私有化
}
public static Singleton getInstance(){//返回一个单例对象实例
return singleton;
}
}
两者有什么区别呢?饿汉式在一开始的时候就实例化对象了,用的时候得到这个对象就好了,所以饿汉式的速度快,效率高,但是如果一直没用到就会耗费系统资源;懒汉式则相反,在用的时候才实例化,但是这也出现一个问题,在多线程时,并不能保证这个类只被实例化一次,所以我们加一个synchronized,将其编程同步方法,这样就是一个线程安全的方法了。
鄙人还处于学习状态,请多多包涵