面向对象、内部类 设计模式

一、内部类

1、概述

内部类:类体中还有一个类的声明

当一个事物的内部,还有一个部分需要一个完整的结构进行描述,这个内部的完整结构,一般只是为了让外部类使用

而内部类还有一个作用时 可以访问外部类中的私有化属性

2、成员内部类

 

 3、 静态内部类

 

 4、局部内部类

局部内部类等同于局部变量
 * 局部内部类,不能使用static修饰,也不能使用权限控制修饰符‘
 * 如果外部方法是静态方法,则局部内部类不能直接访问外部类的成员属性
 * 如果外部方法是成员方法,则局部内部类中可以直接访问外部类所有属性
 * 
 * 局部内部类中如果要使用外部方法中的局部变量,则该变量
 * 不行使用final修饰(1.8开始,final可以省略)

 

5、匿名内部类 

 匿名内部类:在方法调用时,需要传入一个类的对象
 这个时候可以直接传入一个匿名内部类
  一般该对象,是接口的实现类对象,匿名内部类等于内部类
  可以使用使用super等关键词
  语法:方法(new 父类/接口(){类体})
  匿名内部类,会自动创建一个对象传入
  好处 少定义一个类,缺点 无法重复使用

 

 

二、设计模式

1、概述

设计模式:在编程中经常用到,形成了固定的结构
单列模式:实例化多次,得到同一个对象,让某个类只能被实例化

实现步骤:
  现在控制对象数量,只有一个
 1、不能让用户创建对象
  创建对象需要构造方法,不让用户访问构造方法
 构造方法私有化
  2、需要我们创建一个,并且只创建一次即可
  我们必须提供一个让用户能获取一个对象
 获取对象那么一定是静态方法
  如果是成员方法的话,调用该方法需要用到对象,而对象获取需要调用这个方法,
 相互矛盾
  3、储存对象的变量
  变量不储存,不能重复使用。所以为了保证对象只有一个,我们更多是创建对象之后,进行重复使用
 * 局部变量:具有临时性,方法执行完后就不存在,下次调用该方法时,变量重新初始化
  成员变量:静态方法中不能 操作成员变量
  静态变量:和类相关,和类生命周期一致
  所以应该创建一个用来保存当前对象的静态变量
 1、构造方法私有化
 2.提供一个私有的静态的用来保存当前类的静态变量
 3、提供一个公共的静态方法,用来获取该对象
 根据创建对象的时机不同,分为两种
        1 懒汉模式
                 用到的时候再创建对象,也就是第一次获取的时候
         2 饿汉模式
                类加载的时候,就立刻创建对象

 懒汉模式和饿汉模式的区别 : 
        1 内存角度
                 懒汉模式要好一些,用到的时候再创建使用,一般叫做懒加载/迟加载
               饿汉模式浪费内存,还不用呢,对象就已经先创建了
       2 线程安全角度
              饿汉模式是在类加载阶段就初始化的,所以在多线程环境下没有问题,因为类在生命周期中只会加载一次
               懒汉模式在多线程并发性的情况下,就不行了,可能创建多个对象,但是可以通过双重校验加锁解决
      所以 一般我们使用懒汉模式居多,尽管在多线程下,也使用懒汉模式,使用双重校验加锁解决并发问题即可 


 2、懒汉模式

3、饿汉模式

 三、工厂模式

定义一个创建对象的接口,让子类自己决定实例化那个工厂,工厂模式使其创建过程延迟到子类

解决接口选择的问题

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值