-
特点:
-
用Enum关键字定义类
-
枚举默认继承了java.long.Enum而不是Object
-
枚举的默认构造方法只能用private修饰符,如果构造方法省略修饰符,则默认使用privatte修饰符.
-
枚举所有的对象(实例)必须在枚举中显示列出,否则这个枚举将永远不能创建实例对象.
-
枚举列出的对象,系统会自动添加public static final修饰符.
final的作用是内存地址不变,枚举类中对象的变量值可以用过get/set方法修改。
-
-
单例模式:一个类,只能有一个对象,且不能再创建新的对象.(饱汉式/饿汉式)
-
第一种方法:(懒汉式)
-
私有化构造方法
-
提供一个公有的获取单例对象的静态方法
-
-
第二种方法:(饿汉式)
-
不管有无对象,先创建一个,且是最后一个
-
-
第三种方法:(枚举)
-
汉&饿汉User类
-
public class User{
private String name;
//懒汉式1 -->创建一个对象u
private static User u;
//饿汉式1 --->不管有无对象,先创建一个,且是最后一个对象(final修饰)
private static final User u2 = new User("abc");
//懒汉式1---> 私有化构造方法
private User(String name){
this.name = name;
}
//提供一个公有的获取单例对象的静态方法
//通过一个静态方法来判断是否创建一个对象,如果没有创建过对象,则创建一个,否则则不创建对象,继续返回原来创建的对象
public static User getInstance(){
if(u == null){
u = new User("abc");
}
//饿汉式1 ---> 获取创建的对象
public static User getInstance(){
return u2;
}
//饿汉式1 ---> 获取饿汉式1的名字
public String getName(){
return name;
}
//饿汉式1 ---> 设置饿汉式1的名字
public void setName(String name){
this.name = name;
}
//懒汉式1 ---> 获取对象
public static User GetU(){
return u;
}
//懒汉式1 ---> 设置对象
public static void setU(User u){
User.u = u;
}
}
} -
枚举类:
public enum MeEnum{
//创建了对象alipay , wechat
alipay("st001","alst001"),wechat("wc2","002");
//定义变量,默认添加了private
String account;
String password;
private MeEnum(String)
//根据对象,创建了构造方法
private MeEnum(String a, String b){
account = a;
password = b;
}
//获取account(账号),并返回String类型的account值
public String getAccount(){
return account;
}
//设置account的值
public void setAccount(String account){
this.account = account;
}
//获取String类型的password密码
public String getPassword(){
return password;
}
//设置String类型的密码
public void setPassword(String password){
this.password = password;
}
} -
调用类:
public class Account{
//调用枚举对象的变量值
String act = MeEnum.alipay.getAccount();
User u1 = User.getInstance();//调用饿汉式创建的对象
System.out.println(u1.getName());//获取饿汉式对象的name
//验证是否是单例模式 ----> 对象全都一致 ---> 为abc
System.out.println(u1.getName());//获取饿汉式对象的name
System.out.println(u1.getName());//获取饿汉式对象的name
System.out.println(u1.getName());//获取饿汉式对象的name
}
-