单例模式( Singleton Pattern )是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提 供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访 问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供了一个全局访问点来访问该实例。就是不 管 new 多少次,创建的都是同一个对象。
1.单例类只能有⼀个实例。
2.单例类必须⾃⼰创建⾃⼰的唯⼀实例。
3.单例类必须给所有其他对象提供这⼀实例。
方法一,懒汉模式
public class LazySingleton {
private static LazySingleton INSTANCE;
private LazySingleton() {
}
public static LazySingleton getInstance() {
if (INSTANCE == null) {
INSTANCE = new LazySingleton();
}
return instance;
}
}
方法·二,饿汉模式
public class Singleton {
private static final Singleton INSTANCE = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return INSTANCE;
}
}
方法三,静态内部类
public class Singleton {
private static final Singleton INSTANCE = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return INSTANCE;
}
}
方法四,枚举
public enum Singleton {
INSTANC();
}
枚举
在Java中,枚举( enum )是一种特殊的数据类型,用于定义一组命名的常量。枚举常用于表示一组相关的常量, 并且可以增加额外的属性和方法。
关键字 enum
枚举是一种特殊的类,可以像其他类一样拥有构造函数、成员变量和成员方法,成员类等,但不能被继承
枚举虽然有构造函数,但是不能实例化。
它的每⼀个实例都被声明在枚举当中(第⼀⾏)。多个实例之间使⽤ , 隔开。 ; 表⽰实例声明结束
所有使⽤ enum 声明的都是枚举类,枚举类都是 java.lang.Enum 类的⼦类。枚举对象可以调⽤从 java.lang.Enum 类继承的⽅法:
ordinal() 枚举实例声明的索引值
public class Greetings2 {
enum Day{
MONDAY,
Tuesday,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY;
public static void main(String[] args) {
System.out.println(Day.Tuesday.ordinal());// 1
}
}
static values() 获取所有枚举常量的数组
public class Greetings2 {
enum Day{
MONDAY,
Tuesday,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY;
public static void main(String[] args) {
Day []days=Day.values();
for (Day day:days
) {
System.out.println(day);/*MONDAY
Tuesday
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
SUNDAY*/
}
}
}
}
static valueOf(String name) 通过枚举常量的名称(字符串)来获取对应的枚举实例
public class Greetings2 {
enum Day{
MONDAY,
Tuesday,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY;
public static void main(String[] args) {
System.out.println(Day.valueOf("FRIDAY"));//FRIDAY
}
}
创建一个枚举类型,表示不同类型的食物(例如:水果、蔬菜、肉类等),并为每个食物类型添加一个关联的 值,表示其卡路里含量。编写一个函数,接受一个食物枚举值,并返回该食物的卡路里含量。
什么是设计模式
设计模式是针对软件开发中经常遇到的一些设计问题,根据基本的设计原则,总结出来的一套实用的解决方案或 者设计思路。
设计模式是非常偏实际应用的,相比设计原则更加具体、可执行。
因此,在了解设计模式之前,就需要了解一些基本的设计原则。这些原则才是指导我们写出好代码的关键。
那么什么是好代码呢?
好代码的标准其实很难描述,我们试着归纳一些好代码的特征,比如下面这些: 可维护、可扩展、可读、可测、可复用、简洁。
为了达到这些标准,就需要现有一些基本的设计原则。
经典的设计模式有 23 种。随着编程语言的演进,一些设计模式也随之过时,甚至成了反模式,一些则被内置在编 程语言中,另外还有一些新的模式诞生
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
结构型模式,共七种:适配器模式、装饰者模式、代理模式、门面模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录 模式、状态模式、访问者模式、中介者模式、解释器模式。