面向对象学习22 - 设计模式中的单例模式
设计模式实在大量的实践中总结和理论化之后优选的代码结构、编程风格】以及解决问题的思考模式。
设计模式免去我们自己再重新思考和摸索。
经典的设计模式有23种

单例模式
什么是单例模式?
采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。
实现思路
类的构造器设置为private,只能在类内部产生对象。因为外部开始还无法得到类的对象,只能调用该类的某个静态方法
以返回类内部创建的对象,静态方法只能访问静态成员变量,所以该类对象的变量也是静态的。
实现具体例子
饿汉式
public class BankTest{
    public static void main(String[] args){
        Bank bank = Bank.getInstance();
    }
}
class Bank{
    private Bank(){//1.构造器私有化
    }
    private static Bank instance = new Bank();//3.由于方法是静态的,方法中使用的变量也应该是静态的
    public static Bank getInstance(){//2.因为外部无法创建实例,方法也应该是静态的
        return instance;
    }
}
懒汉式
public class GirlFriendTest{
}
class GirlFriend{
    //类的构造器私有化
    private GirlFriend(){
    }
    //声明当前类实例
    private GirlFriend instance = null;
    //通过get方法取实例,如果对象还未创建,则在方法内部创建对象
    public static GirlFriend getInstance(){
        if(instance == null){
            instance = new GirlFriend();
        }
        return instance;
    }
}
对比饿汉式和懒汉式
特点:
饿汉式直接加载,随着类的加载,当前唯一实例就创建了。
懒汉式延迟加载,在需要使用时进行创建。
优缺点:
饿汉式:写法简单,由于内存种较早加载,使用更简便,更快。是线程安全的。但是它在内存中占用的时间长(类似于内存泄漏)。
懒汉式:(缺点)线程不安全。(优点)有需要时创建,节省内存空间。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号