带你走进设计模式、内部类的世界

单例模式

单例模式:保证类只能存在一个对象

懒汉式:调用功能的时候才创建对象

饿汉式:类第一次加载完成之后就创建对象

当多个人同时调用静态方法时,懒汉容易创建不同对象

实现步骤:

  1. 构造器私有化
  2. 私有的静态的该类的引用
  3. 公共的访问方式
//饿汉式
public class Single01{
	private static Single01 single = new Single01();//私有的静态的该类的引用
  //构造器私有化
	private Single01(){}
	public static Single01 newInstance(){//公共的访问方式
		return single;
	}
}
//懒汉式
public class SingleTon02{
  //私有的静态的该类的引用
	private static SingleTon02 single = null;
  //构造器私有化
	private SingleTon02(){}
	public static SingleTon02 newInstance(){公共的访问方式
		if(single==null){
			single = new SingleTon02();
		}
		return single;
	}
}

静态代理

静态代理:

  1. 真实角色需要和代理角色实现相同的接口
  2. 代理需要持有真实角色的引用
  3. 代理行为

优点:

减少与真实角色的交流,提高代码的安全行,解耦,便于后期维护,代理角色可以扩展功能

简单工厂

让汽车厂生产汽车

内部类

内部类:类中定义类

当一个类中的成员也是另外一个事物的时候,这个事物就 可以使用内部类定义

分类:

成员内部类

局部内部类

静态内部类

私有内部类

匿名内部类

成员内部类:

内部类处于外部类成员位置

​ 是外部的成员,就可以使用成员修饰符

​ 是个类,有类的特性,继承,实现接口。。。

注意:

  1. 内部类中可以使用外部类中所有的内容,包括私有的
  2. 除了静态内部类以外的内部类不可以定义静态的内容,除了静态的常量
  3. 在外部类中使用内部类中的成员,通过内部类的对象
  4. 在其他类中使用内部类中的成员,需通过外部类的对象生成内部类对象
  5. 内部类成员变量覆盖外部成员变量,通过外部类.this.成员变量获得外部类成员变量

静态内部类

成员内部类如果一旦被static关键字修饰,就是静态内部类

注意:

  1. 如果在外部类中使用静态内部类中的成员,需要跟随内部类对象使用,如果使用静态内部类中的静态内容,直接类名.调用

  2. 如果在静态内部类中使用外部类的成员,需要跟随外部类对象使用,如果使用外部类中的静态内容,可以直接使用

  3. 在其他类中调用静态内部类中的成员,需要创建对象:

    外部类.内部类 引用名 = new外部类.内部类;

    在其他类中调用静态内部类中的静态内容:

    外部类.内部类.静态内容;

私有内部类

成员内部类一旦被private修饰,就是私有内部类

私有内部类只能在当前所定义的外部类中使用,其他类中无法使用

在外部类中可以通过内部类的对象使用内部类中的内容,包括私有的

局部内部类

局部内部类只能在当前所在的方法中使用,其他方法,其他类无法使用

当前所在的方法需通过内部类的对象来访问内部类的成员内容

局部内部类中使用到当前所在方法的参数时,这个参数默认被final修饰

​ 如果修改就不能在局部内部类中使用

​ 如果在局部内部类中使用就不能修改其参数的值

匿名内部类

如果某个实现类本身没有自己的作用,只是为了重写某些抽象方法的,可以使用匿名内部类进行代替

Lambda表达式

jdk1.8的新特性

作用:用来简化匿名内部类

前提:函数式接口

函数式接口:只有一个抽象方法的接口就是函数式接口

检查函数式接口:@FunctionalInterface

Lambda表达式1:

p = ()->{system.out.println("111");};

Lambda表达式2:如果方法体只有一句,可以省略{};

p = ()->system.out.println("222");

Lambda表达式3:参数可以省略数据类型

p = (i)->system.out.println("333");

Lambda表达式4:如果只有一个参数,可以省略()

p = i->system.out.println("444");

Lambda表达式5:如果方法体只有一句,且是return ,可以同时省略return和{}; ,但是不可以只省略return

p = i->555;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值