十分钟学会 java中的单例模式,匿名内部类, Lanbda表达式的使用以及异常的处理

单例模式

单例模式是23种设计模式中的一种,这里简单介绍一下单例模式

什么是单例模式?

**单例模式:**单例模式是为了保证JVM中某一个类型的java对象永远只有一个.

**目的:**为了节省内存的开销

实现步骤:

  1. 构造方法私有化
  2. 对外提供一个公共的静态的获取当前类型对象的方法
  3. 提供一个当前类型的静态变量

单例模式分为两种:

  • 饿汉式单例:在类加载阶段就创建了对象
  • 懒汉式单例:用到对象的时候才会创建对象
//饿汉式:
public class Single01{
   
    //1.构造器私有化
    private Single01(){
   
        
    }
    //2.私有化静态的该类的引用
    //在类加载阶段就创建了对象
    private static Single01 single=new Single01();
    //3.公共的访问方式
    public static Single01() newInstance{
   
    return single;
    }
}
//设计模式测试类
public class Test{
   
    public static void main(String[]args){
   
        //单例模式
        Single01 single=Single01.newInstance();
        System.out.println(single);
         System.out.println(Single.newInstance());
         System.out.println(Single.newInstance());
        
    }
}
/*
输出结果:
		com.shsxt.design02.Single01@15db9742
		com.shsxt.design02.Single01@15db9742
		com.shsxt.design02.Single01@15db9742
		输出的对象地址值一样,代表单例模式设计成功.
为什么以上方法叫饿汉式呢?
		因为在类加载阶段就创建了对象
*/
//懒汉式:
public class SingleTon02{
   
    //2.私有的静态的该类的引用
    private static SingleTon02 single=null;
    //1.私有构造器
    private SingleTon01(){
   
    }
    //3.公共的访问方式
    public static SingleTon02 newInstance(){
   
        if(single == null){
   
            single = new SingleTon02();
        }
        return single;
    }
}
//单例模式
public class Test {
   
	public static void main(String[] args) {
   
		//单例模式
		System.out.println(SingleTon02.newInstance());
		System.out.println(SingleTon02.newInstance());
		System.out.println(SingleTon02.newInstance());
	}
}
/*
输出结果:
		com.shsxt.design02.SingleTon02@15db9742
		com.shsxt.design02.SingleTon02@15db9742
		com.shsxt.design02.SingleTon02@15db9742
		输出的对象地址值一样,代表单例模式设计成功.
为什么以上方法叫懒汉式呢?
		因为用到对象的时候才会创建对象
*/
静态代理
/*
	静态代理:
		真实角色需要和代码角色实现相同的接口
		代理需要持有真实角色的引用
		代理行为
		
	静态代理的目的:
			减少与真实角色的交流,提高代码的复用性,解耦,便于后期维护,代理角色可以扩展功能
*/
public class StaticProxy03{
   
    public static void main(String[]args){
   
        
    }
}

//接口
interface AddUser{
   
    void addUser();
}

//项目经理 实现接口 AddUser
class Manager implements AddUser{
   
    //重写接口里的抽象方法
     @Override 
    public void addUser(){
   
        System.out.println("录用...");
}
    
//人力资源 实现 接口 AddUser
class Hr implements AddUser{
   
    //真实角色的引用
    Manager manager;
    //空构造
    public Hr(){
   
    	
    }
    public Hr(Manager manager)<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值