单例模式饿汉式和懒汉式的实现

单例模式的优点:

只生成一个实例,减少了系统内存的开销

单例的饿汉式实现

优点:多线程时是线程安全的

缺点:对象加载时间过长

 1 /*单例设计模式 某个类只能存在一个对象实例
 2 1.私有化类的构造器
 3 2.内部创建类的静态的对象
 4 3.提供类的静态的方法
 5 */
 6 public class test {
 7 public static void main(String[] args)
 8 {
 9     Bank bank1=Bank.getInstance();
10     Bank bank2=Bank.getInstance();
11     System.out.println(bank1==bank2);//true
12 }
13 
14 }
15 
16 class Bank
17 {
18     //私有化类的构造器
19     private Bank()
20     {
21         
22     }
23     //内部创建类的对象,对象也必须是静态的
24     private static Bank instance=new Bank();
25     //提供公共的静态的方法,返回类的对象
26     public static Bank getInstance()
27     {//建立对象需要类的构造器,但是被私有了,调用类返回对象的方法企图得到对象,但是需要先建立对象
28     //这里将方法变成静态,就可以通过类直接调用
29         return instance;//静态的方法只能调用静态的结构,所以创建的对象需为静态
30     }
31 }

 

单例的懒汉式实现

优点:延迟对象的加载

缺点:目前的写法是线程不安全的,在多线程情况下需要改进

 1 /*单例设计模式 某个类只能存在一个对象实例
 2 1.私有化类的构造器
 3 2.声明当前类的静态对象,没有初始化
 4 3.声明public,static的返回当前类对象的方法
 5 */
 6 public class test {
 7 public static void main(String[] args)
 8 {
 9     Order order=Order.getInstance();
10 }
11 
12 }
13 
14 class Order
15 {
16     //私有化类的构造器
17     private Order()
18     {
19         
20     }
21     //声明当前类对象,没有初始化
22     private static Order instance=null;
23     //声明public,static的返回当前类对象的方法
24     public static Order getInstance()
25     {
26         if(instance==null)
27             instance=new Order();
28         return instance;
29     }
30 }

两者区别在于:饿汉式的类对象是及时创建的,懒汉式的类对象是需要时再创建的。

posted @ 2019-05-07 21:37  zuiaimiusi  阅读(295)  评论(0编辑  收藏  举报