day11-内部类-两种设计模式(单例、简单工厂)

一、内部类

1、成员内部类:直接在外部类下定义,当成外部类的一个成员来使用。权限修饰符正常使用。

主函数中调用实例化的时候,需要借助外部类的对象。

2、局部内部类:定义在方法中或者代码块中的类,相当于一个局部变量。此时权限修饰不起作用了,所以就写不了。

      所以该局部内部类的使用只能在当前方法或者代码块中使用,出了这个范围就访问不到了,就相当于一个局部变量一样的使用。

3、静态内部类:定义位置跟成员内部类一致,都是在外部类下直接定义,区别是加了一个static修饰。此时权限修饰符就有作用,正常使用。

调用时候把这个类当成一个普通的类来使用,实例化对象不需要借助外部类。但此时需要导入外部类中的内部类全路径,如下

 

二、单例设计模式(暂时不考虑多线程同步问题)

1.概念:所谓的单例设计模式就是当创建一个类的时候,该类有且只有一个实例化对象。

2.实现:构造函数私有化,声明一个静态的该类实例化对象,提供得到实例的公共方法

代码实现(饿汉式)

public class Boss{

  //饿汉式

  //构造函数私有化  
   private Boss(){}

  //声明静态的Boss类的实例boss
   private static Boss boss = new Boss();
      
  //对外提供get实例的静态方法
   public static Boss getInstance(){
      
       return boss;
}
}

懒汉式:

public class Boss{

   //懒汉式

  //构造函数私有化
  private Boss() { }

   //声明私有静态的Boss类型的boss变量,初始化为null;   
   private static Boss boss = null;

  //对外提供get实例的静态方法
   public static Boss getInstance(){
  //先判断当前实例是不是空
    if(null==boss)
        boss = new Boss();
//否则返回当前的boss实例 return boss; } }

 

三、工厂模式(简单工厂)

 

posted on 2018-07-26 22:01  志爱007  阅读(272)  评论(0编辑  收藏  举报